char skype[6] = "Skype";
HWND firstwindow = FindWindowEx(NULL, NULL, NULL, NULL);
HWND window = firstwindow;
TCHAR windowtext[MAX_PATH]; //search term
//We need to get the console title in case we
//accidentally match the search word with it
//instead of the intended target window.
TCHAR consoletitle[MAX_PATH];
GetConsoleTitle(consoletitle, MAX_PATH);
while(true){
//Check window title for a match
GetWindowText(window, windowtext, MAX_PATH);
if (strstr(windowtext, skype)!=NULL && strcmp(windowtext, consoletitle)!=0) break; //search for program
//Get next window
window = FindWindowEx(NULL, window, NULL, NULL);
if(window == NULL || window == firstwindow){
printf("Window not found.\n");
return 1;
}
} //end while
Error: cannot convert 'TCHAR* {aka wchar_t*}' to 'const char*' for argument '1' to 'char* strstr(const char*, const char*)'
Проблема возникает в этой строке:
if (strstr(windowtext, skype)!=NULL && strcmp(windowtext, consoletitle)!=0) break; //search for program
У меня нет проблем, когда я запускаю ту же программу в компиляторе cygwin mingw32gcc. Является ли это проблемой для меня с помощью компилятора QT mingw32gcc? Я включил <windows.h>
в самом начале, чтобы не проблема.
Edit: Ok Итак, я добавил <tchar.h>
и заменил if (_tcsstr (windowtext, skype)! = NULL && _tcscmp (windowtext, consoletitle)! = 0) break;
Но проблема все еще сохраняется: Ошибка: невозможно преобразовать 'TCHAR * {aka wchar_t *}' в 'const char *' для аргумента '1' в 'char * strstr (const char *, const char *)'
Вместо преобразования в char *
для использования в strstr
, вы должны использовать TCHAR
-equivalent, _tcsstr
; он будет скомпилирован для правильного вызова либо strstr
либо wcsstr
.
char skype[6] = "Skype";
с TCHAR skype[] = _T("Skype");
, Хотя в wchar_t
просто использование wchar_t
кажется проще.
Чтобы использовать код юникода в коде, вам необходимо определить _UNICODE
препроцессора UNICODE
и _UNICODE
перед компиляцией кода, поэтому добавьте эти аргументы командной строки для компиляции команды:
-DUNICODE -D_UNICODE
для более того вы можете прочитать это:
http://www.cplusplus.com/forum/windows/90069