forked from len0rd/rockbox
Command line support for fwpatcher by Dave Hooper.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6684 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
2528e7c023
commit
3c30ee51d8
1 changed files with 60 additions and 0 deletions
|
@ -337,18 +337,72 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
TEXT("Success"), MB_OK);
|
TEXT("Success"), MB_OK);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case WM_USER:
|
||||||
|
/* command line driven patch button */
|
||||||
|
SetWindowText(controls[EDIT_FILENAME], (LPCTSTR)wParam);
|
||||||
|
SendMessage(hwnd, WM_COMMAND, 0, (LPARAM)(controls[BUTTON_PATCH]) );
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return DefWindowProc(hwnd, msg, wParam, lParam);
|
return DefWindowProc(hwnd, msg, wParam, lParam);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void getargs(LPTSTR p, int * argc, LPCTSTR * argv, int MAXARGS)
|
||||||
|
{
|
||||||
|
int quote=FALSE,whitespace=FALSE;
|
||||||
|
LPCTSTR tok=p;
|
||||||
|
*argc=0;
|
||||||
|
while(*argc<MAXARGS)
|
||||||
|
{
|
||||||
|
if((*p==TEXT(' ') || *p==TEXT('\0')) && !quote)
|
||||||
|
{
|
||||||
|
if(!whitespace)
|
||||||
|
{
|
||||||
|
whitespace=TRUE;
|
||||||
|
*argv++ = tok;
|
||||||
|
(*argc)++;
|
||||||
|
};
|
||||||
|
if(*p==TEXT('\0'))
|
||||||
|
break; // end of cmd line
|
||||||
|
*p=TEXT('\0');
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(whitespace)
|
||||||
|
tok=p;
|
||||||
|
whitespace=FALSE;
|
||||||
|
if(*p==TEXT('\"'))
|
||||||
|
{
|
||||||
|
*p=TEXT(' ');
|
||||||
|
if(!quote)
|
||||||
|
{
|
||||||
|
p++;
|
||||||
|
tok=p;
|
||||||
|
}
|
||||||
|
quote = !quote;
|
||||||
|
}
|
||||||
|
else p++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#define MAXARGC 4
|
||||||
|
|
||||||
int WINAPI WinMain(HINSTANCE instance, HINSTANCE prev_instance,
|
int WINAPI WinMain(HINSTANCE instance, HINSTANCE prev_instance,
|
||||||
LPSTR command_line, int command_show)
|
LPSTR command_line, int command_show)
|
||||||
{
|
{
|
||||||
HWND window;
|
HWND window;
|
||||||
WNDCLASSEX wc;
|
WNDCLASSEX wc;
|
||||||
MSG msg;
|
MSG msg;
|
||||||
|
int argc;
|
||||||
|
LPCTSTR argv[MAXARGC] = { NULL };
|
||||||
|
LPTSTR cmdline = GetCommandLine();
|
||||||
|
|
||||||
|
getargs(cmdline, &argc, argv, MAXARGC);
|
||||||
|
if (argc > 1)
|
||||||
|
command_show = SW_HIDE;
|
||||||
|
|
||||||
rbicon = LoadIcon(instance, MAKEINTRESOURCE(IDI_RBICON));
|
rbicon = LoadIcon(instance, MAKEINTRESOURCE(IDI_RBICON));
|
||||||
ZeroMemory(&wc, sizeof(wc));
|
ZeroMemory(&wc, sizeof(wc));
|
||||||
|
@ -368,6 +422,12 @@ int WINAPI WinMain(HINSTANCE instance, HINSTANCE prev_instance,
|
||||||
if (!window) return 0;
|
if (!window) return 0;
|
||||||
|
|
||||||
ShowWindow(window, command_show);
|
ShowWindow(window, command_show);
|
||||||
|
|
||||||
|
if (argc > 1) {
|
||||||
|
SendMessage(window, WM_USER, (WPARAM)(argv[1]), 0);
|
||||||
|
SendMessage(window, WM_CLOSE, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
while (GetMessage(&msg, 0, 0, 0) > 0) {
|
while (GetMessage(&msg, 0, 0, 0) > 0) {
|
||||||
if (!IsDialogMessage(window, &msg)) {
|
if (!IsDialogMessage(window, &msg)) {
|
||||||
TranslateMessage(&msg);
|
TranslateMessage(&msg);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue