mirror of
https://github.com/reactos/reactos.git
synced 2025-07-30 17:32:32 +00:00
[CLIPBRD]
- Add clipboard file icon by Jared Smudde. - Open any clipboard data file given in the command line. [BOOTDATA] - Add registry entries for file extension .clp. CORE-10853 #resolve #comment Support added in revision 70736. svn path=/trunk/; revision=70736
This commit is contained in:
parent
60c090d24a
commit
c3c8cf879c
14 changed files with 93 additions and 78 deletions
|
@ -2,9 +2,9 @@
|
|||
list(APPEND SOURCE
|
||||
clipbrd.c
|
||||
cliputils.c
|
||||
winutils.c
|
||||
fileutils.c
|
||||
scrollutils.c
|
||||
winutils.c
|
||||
precomp.h)
|
||||
|
||||
add_executable(clipbrd ${SOURCE} clipbrd.rc)
|
||||
|
|
|
@ -63,6 +63,23 @@ static void SaveClipboardToFile(void)
|
|||
CloseClipboard();
|
||||
}
|
||||
|
||||
static void LoadClipboardDataFromFile(LPWSTR lpszFileName)
|
||||
{
|
||||
if (!OpenClipboard(Globals.hMainWnd))
|
||||
{
|
||||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
return;
|
||||
}
|
||||
|
||||
if (MessageBoxRes(Globals.hMainWnd, Globals.hInstance, STRING_DELETE_MSG, STRING_DELETE_TITLE, MB_ICONWARNING | MB_YESNO) == IDYES)
|
||||
{
|
||||
EmptyClipboard();
|
||||
ReadClipboardFile(lpszFileName);
|
||||
}
|
||||
|
||||
CloseClipboard();
|
||||
}
|
||||
|
||||
static void LoadClipboardFromFile(void)
|
||||
{
|
||||
OPENFILENAMEW ofn;
|
||||
|
@ -87,19 +104,7 @@ static void LoadClipboardFromFile(void)
|
|||
if (!GetOpenFileNameW(&ofn))
|
||||
return;
|
||||
|
||||
if (!OpenClipboard(Globals.hMainWnd))
|
||||
{
|
||||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
return;
|
||||
}
|
||||
|
||||
if (MessageBoxRes(Globals.hMainWnd, Globals.hInstance, STRING_DELETE_MSG, STRING_DELETE_TITLE, MB_ICONWARNING | MB_YESNO) == IDYES)
|
||||
{
|
||||
EmptyClipboard();
|
||||
ReadClipboardFile(szFileName);
|
||||
}
|
||||
|
||||
CloseClipboard();
|
||||
LoadClipboardDataFromFile(szFileName);
|
||||
}
|
||||
|
||||
static void LoadClipboardFromDrop(HDROP hDrop)
|
||||
|
@ -109,19 +114,7 @@ static void LoadClipboardFromDrop(HDROP hDrop)
|
|||
DragQueryFileW(hDrop, 0, szFileName, ARRAYSIZE(szFileName));
|
||||
DragFinish(hDrop);
|
||||
|
||||
if (!OpenClipboard(Globals.hMainWnd))
|
||||
{
|
||||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
return;
|
||||
}
|
||||
|
||||
if (MessageBoxRes(Globals.hMainWnd, Globals.hInstance, STRING_DELETE_MSG, STRING_DELETE_TITLE, MB_ICONWARNING | MB_YESNO) == IDYES)
|
||||
{
|
||||
EmptyClipboard();
|
||||
ReadClipboardFile(szFileName);
|
||||
}
|
||||
|
||||
CloseClipboard();
|
||||
LoadClipboardDataFromFile(szFileName);
|
||||
}
|
||||
|
||||
static void SetDisplayFormat(UINT uFormat)
|
||||
|
@ -169,7 +162,7 @@ static void InitMenuPopup(HMENU hMenu, LPARAM index)
|
|||
DrawMenuBar(Globals.hMainWnd);
|
||||
}
|
||||
|
||||
void UpdateDisplayMenu(void)
|
||||
static void UpdateDisplayMenu(void)
|
||||
{
|
||||
UINT uFormat;
|
||||
WCHAR szFormatName[MAX_FMT_NAME_LEN + 1];
|
||||
|
@ -258,7 +251,7 @@ static int ClipboardCommandHandler(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM l
|
|||
WCHAR szTitle[MAX_STRING_LEN];
|
||||
HICON hIcon;
|
||||
|
||||
hIcon = LoadIconW(Globals.hInstance, MAKEINTRESOURCE(CLIP_ICON));
|
||||
hIcon = LoadIconW(Globals.hInstance, MAKEINTRESOURCE(CLIPBRD_ICON));
|
||||
LoadStringW(Globals.hInstance, STRING_CLIPBOARD, szTitle, ARRAYSIZE(szTitle));
|
||||
ShellAboutW(Globals.hMainWnd, szTitle, 0, hIcon);
|
||||
DeleteObject(hIcon);
|
||||
|
@ -346,6 +339,28 @@ static LRESULT WINAPI MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lP
|
|||
{
|
||||
switch(uMsg)
|
||||
{
|
||||
case WM_CREATE:
|
||||
{
|
||||
Globals.hMenu = GetMenu(hWnd);
|
||||
Globals.hWndNext = SetClipboardViewer(hWnd);
|
||||
UpdateDisplayMenu();
|
||||
SetDisplayFormat(0);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_CLOSE:
|
||||
{
|
||||
DestroyWindow(hWnd);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_DESTROY:
|
||||
{
|
||||
ChangeClipboardChain(hWnd, Globals.hWndNext);
|
||||
PostQuitMessage(0);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_PAINT:
|
||||
{
|
||||
ClipboardPaintHandler(hWnd, uMsg, wParam, lParam);
|
||||
|
@ -395,28 +410,6 @@ static LRESULT WINAPI MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lP
|
|||
break;
|
||||
}
|
||||
|
||||
case WM_CREATE:
|
||||
{
|
||||
Globals.hMenu = GetMenu(hWnd);
|
||||
Globals.hWndNext = SetClipboardViewer(hWnd);
|
||||
UpdateDisplayMenu();
|
||||
SetDisplayFormat(0);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_CLOSE:
|
||||
{
|
||||
DestroyWindow(hWnd);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_DESTROY:
|
||||
{
|
||||
ChangeClipboardChain(hWnd, Globals.hWndNext);
|
||||
PostQuitMessage(0);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_CHANGECBCHAIN:
|
||||
{
|
||||
if ((HWND)wParam == Globals.hWndNext)
|
||||
|
@ -534,7 +527,7 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi
|
|||
wndclass.cbSize = sizeof(wndclass);
|
||||
wndclass.lpfnWndProc = MainWndProc;
|
||||
wndclass.hInstance = hInstance;
|
||||
wndclass.hIcon = LoadIconW(hInstance, MAKEINTRESOURCEW(CLIP_ICON));
|
||||
wndclass.hIcon = LoadIconW(hInstance, MAKEINTRESOURCEW(CLIPBRD_ICON));
|
||||
wndclass.hCursor = LoadCursorW(0, IDC_ARROW);
|
||||
wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
|
||||
wndclass.lpszMenuName = MAKEINTRESOURCEW(MAIN_MENU);
|
||||
|
@ -574,6 +567,10 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi
|
|||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
}
|
||||
|
||||
/* If the user provided a path to a clipboard data file, try to open it */
|
||||
if (lpCmdLine != NULL && *lpCmdLine)
|
||||
LoadClipboardDataFromFile(lpCmdLine);
|
||||
|
||||
UpdateLinesToScroll();
|
||||
|
||||
while (GetMessageW(&msg, 0, 0, 0))
|
||||
|
|
|
@ -8,7 +8,8 @@
|
|||
#define REACTOS_STR_ORIGINAL_FILENAME "clipbrd.exe"
|
||||
#include <reactos/version.rc>
|
||||
|
||||
CLIP_ICON ICON "res/clipbrd.ico"
|
||||
CLIPBRD_ICON ICON "res/clipbrd.ico"
|
||||
CLPFILE_ICON ICON "res/clpfile.ico"
|
||||
|
||||
#include <reactos/manifest_exe.rc>
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@ END
|
|||
STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CLIPBOARD "Zwischenablage"
|
||||
STRING_CLIPFILE "Clipboard Element"
|
||||
STRING_DELETE_MSG "Soll der Inhalt der Zwischenablage gelöscht werden?"
|
||||
STRING_DELETE_TITLE "Zwischenablage löschen"
|
||||
STRING_FORMAT_NT "Zwischenablagedateien für ReactOS (*.clp)"
|
||||
|
|
|
@ -33,6 +33,7 @@ END
|
|||
STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CLIPBOARD "Clipboard"
|
||||
STRING_CLIPFILE "Clipboard Element"
|
||||
STRING_DELETE_MSG "Clear contents of the Clipboard?"
|
||||
STRING_DELETE_TITLE "Clear Clipboard"
|
||||
STRING_FORMAT_NT "Clipboard files for ReactOS (*.clp)"
|
||||
|
|
|
@ -35,6 +35,7 @@ END
|
|||
STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CLIPBOARD "Portapapeles"
|
||||
STRING_CLIPFILE "Clipboard Element"
|
||||
STRING_DELETE_MSG "¿Borrar contenidos del Portapapeles?"
|
||||
STRING_DELETE_TITLE "Vaciar Portapapeles"
|
||||
STRING_FORMAT_NT "Archivos de Portapapeles de ReactOS (*.clp)"
|
||||
|
|
|
@ -18,7 +18,7 @@ BEGIN
|
|||
BEGIN
|
||||
MENUITEM "&Supprimer\tSuppr", CMD_DELETE
|
||||
END
|
||||
POPUP "&Affichage"
|
||||
POPUP "Affic&hage"
|
||||
BEGIN
|
||||
MENUITEM "&Automatique", CMD_AUTOMATIC
|
||||
END
|
||||
|
@ -33,6 +33,7 @@ END
|
|||
STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CLIPBOARD "Presse-papiers"
|
||||
STRING_CLIPFILE "Élément du Presse-papiers"
|
||||
STRING_DELETE_MSG "Voulez-vous effacer le contenu du Presse-papiers ?"
|
||||
STRING_DELETE_TITLE "Effacer le Presse-papiers"
|
||||
STRING_FORMAT_NT "Fichiers du Presse-papiers ReactOS (*.clp)"
|
||||
|
|
|
@ -34,6 +34,7 @@ END
|
|||
STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CLIPBOARD "Clipboard"
|
||||
STRING_CLIPFILE "Clipboard Element"
|
||||
STRING_DELETE_MSG "Elimină conținutul din Clipboard?"
|
||||
STRING_DELETE_TITLE "Curăță Clipboard"
|
||||
STRING_FORMAT_NT "Fișiere clipboard pentru ReactOS (*.clp)"
|
||||
|
|
|
@ -35,6 +35,7 @@ END
|
|||
STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CLIPBOARD "Pano"
|
||||
STRING_CLIPFILE "Clipboard Element"
|
||||
STRING_DELETE_MSG "Pano içeriğini sil?"
|
||||
STRING_DELETE_TITLE "Pano Sil"
|
||||
STRING_FORMAT_NT "ReactOS İçin Pano Kütükleri (*.clp)"
|
||||
|
|
|
@ -35,6 +35,7 @@ END
|
|||
STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CLIPBOARD "剪贴板"
|
||||
STRING_CLIPFILE "Clipboard Element"
|
||||
STRING_DELETE_MSG "清除剪贴板的内容吗?"
|
||||
STRING_DELETE_TITLE "清除剪贴板"
|
||||
STRING_FORMAT_NT "ReactOS 的剪贴板文件 (*.clp)"
|
||||
|
|
|
@ -35,6 +35,7 @@ END
|
|||
STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CLIPBOARD "剪貼簿"
|
||||
STRING_CLIPFILE "Clipboard Element"
|
||||
STRING_DELETE_MSG "清除剪貼簿的內容嗎?"
|
||||
STRING_DELETE_TITLE "清除剪貼簿"
|
||||
STRING_FORMAT_NT "ReactOS 的剪貼簿檔案 (*.clp)"
|
||||
|
|
BIN
reactos/base/applications/clipbrd/res/clpfile.ico
Normal file
BIN
reactos/base/applications/clipbrd/res/clpfile.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
|
@ -1,38 +1,40 @@
|
|||
#pragma once
|
||||
|
||||
#define MAIN_MENU 100
|
||||
#define CLIP_ICON 101
|
||||
#define ID_ACCEL 102
|
||||
#define CLIPBRD_ICON 100
|
||||
#define CLPFILE_ICON 101
|
||||
#define MAIN_MENU 102
|
||||
#define ID_ACCEL 103
|
||||
|
||||
#define CMD_OPEN 100
|
||||
#define CMD_SAVE_AS 101
|
||||
#define CMD_EXIT 102
|
||||
#define CMD_DELETE 103
|
||||
#define CMD_HELP 105
|
||||
#define CMD_ABOUT 106
|
||||
#define CMD_OPEN 110
|
||||
#define CMD_SAVE_AS 111
|
||||
#define CMD_EXIT 112
|
||||
#define CMD_DELETE 113
|
||||
#define CMD_HELP 115
|
||||
#define CMD_ABOUT 116
|
||||
|
||||
#define CMD_AUTOMATIC 1000
|
||||
|
||||
#define STRING_CLIPBOARD 100
|
||||
#define STRING_DELETE_MSG 101
|
||||
#define STRING_DELETE_TITLE 102
|
||||
#define STRING_FORMAT_NT 103
|
||||
#define STRING_FORMAT_GEN 104
|
||||
#define STRING_CLIPBOARD 120
|
||||
#define STRING_CLIPFILE 121
|
||||
#define STRING_DELETE_MSG 123
|
||||
#define STRING_DELETE_TITLE 124
|
||||
#define STRING_FORMAT_NT 125
|
||||
#define STRING_FORMAT_GEN 126
|
||||
|
||||
#define STRING_CF_UNKNOWN 200
|
||||
#define STRING_CF_TEXT 201
|
||||
#define STRING_CF_BITMAP 202
|
||||
#define STRING_CF_OEMTEXT 203
|
||||
#define STRING_CF_UNICODETEXT 204
|
||||
#define STRING_CF_DIB 205
|
||||
#define STRING_CF_LOCALE 206
|
||||
#define STRING_CF_ENHMETAFILE 207
|
||||
#define STRING_CF_METAFILEPICT 208
|
||||
#define STRING_CF_METAFILEPICT 203
|
||||
#define STRING_CF_SYLK 204
|
||||
#define STRING_CF_DIF 205
|
||||
#define STRING_CF_OEMTEXT 207
|
||||
#define STRING_CF_DIB 208
|
||||
#define STRING_CF_PALETTE 209
|
||||
#define STRING_CF_DIBV5 210
|
||||
#define STRING_CF_SYLK 211
|
||||
#define STRING_CF_DIF 212
|
||||
#define STRING_CF_HDROP 213
|
||||
#define STRING_CF_UNICODETEXT 213
|
||||
#define STRING_CF_ENHMETAFILE 214
|
||||
#define STRING_CF_HDROP 215
|
||||
#define STRING_CF_LOCALE 216
|
||||
#define STRING_CF_DIBV5 217
|
||||
|
||||
#define ERROR_UNSUPPORTED_FORMAT 300
|
||||
#define ERROR_INVALID_FILE_FORMAT 301
|
||||
|
|
|
@ -23,6 +23,13 @@ HKCR,"CLSID\{5F5295E0-429F-1069-A2E2-08002B30309D}","",0x00000000,"Drive Propert
|
|||
HKCR,"CLSID\{5F5295E0-429F-1069-A2E2-08002B30309D}\InProcServer32","",0x00000000,"shell32.dll"
|
||||
HKCR,"CLSID\{5F5295E0-429F-1069-A2E2-08002B30309D}\InProcServer32","ThreadingModel",0x00000000,"Apartment"
|
||||
|
||||
; Clipboard Element
|
||||
HKCR,".clp","",0x00000000,"clpfile"
|
||||
HKCR,"clpfile","",0x00000000,"Clipboard Element"
|
||||
HKCR,"clpfile","FriendlyTypeName",0x00020000,"@%SystemRoot%\system32\clipbrd.exe,-121"
|
||||
HKCR,"clpfile\DefaultIcon","",0x00020000,"%SystemRoot%\system32\clipbrd.exe,1"
|
||||
HKCR,"clpfile\shell\open\command","",0x00000000,"clipbrd.exe %1"
|
||||
|
||||
; Rich Text Files
|
||||
HKCR,".rtf","",0x00000000,"rtffile"
|
||||
HKCR,".rtf\shellnew","",0x00000000,""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue