winedevice: A driver path can also start with \systemroot\.
[wine] / programs / write / write.c
1 /*
2  * Write.exe - this program only calls wordpad.exe
3  *
4  * Copyright 2007 by Mikolaj Zalewski
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20
21 #define WIN32_LEAN_AND_MEAN
22
23 #include <stdarg.h>
24
25 #include <windows.h>
26 #include "resources.h"
27
28 static const WCHAR SZ_BACKSLASH[] = {'\\',0};
29 static const WCHAR SZ_WORDPAD[]   = {'w','o','r','d','p','a','d','.','e','x','e',0};
30
31 int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hOldInstance, LPSTR szCmdParagraph, int res)
32 {
33     WCHAR path[MAX_PATH];
34     STARTUPINFOW stinf;
35     PROCESS_INFORMATION info;
36
37     if (!GetSystemDirectoryW(path, MAX_PATH - 1 - lstrlenW(SZ_WORDPAD)))
38         goto failed;
39     if (path[lstrlenW(path) - 1] != '\\')
40         lstrcatW(path, SZ_BACKSLASH);
41     lstrcatW(path, SZ_WORDPAD);
42
43     stinf.cb = sizeof(STARTUPINFOW);
44     GetStartupInfoW(&stinf);
45
46     if (!CreateProcessW(path, GetCommandLineW(), NULL, NULL, FALSE, 0, NULL, NULL, &stinf, &info))
47         goto failed;
48     CloseHandle(info.hProcess);
49     CloseHandle(info.hThread);
50     return 0;
51
52 failed:
53     LoadStringW(GetModuleHandleW(NULL), IDS_FAILED, path, MAX_PATH);
54     MessageBoxW(NULL, path, NULL, MB_OK|MB_ICONERROR);
55     return 1;
56 }