|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Мар 11, 2003 06:29:31 Как узнать хендл консольного окна? делаю так invoke GetStdHandle,STD_OUTPUT_HANDLE но это не есть хендл консольного окна программы... :-( |
|
|
Дата: Мар 11, 2003 06:41:00 Что-то типа этого: hwnd = GetWindow(GetDesktopWindow(), GW_CHILD); while(hwnd){ GetWindowThreadProcessId(hwnd, &pid); if (pid == GetCurrentProcessId()){ // окно найдено } hwnd = GetWindow(hwnd, GW_HWNDNEXT); } |
|
|
Дата: Мар 11, 2003 09:10:09 |
|
|
Дата: Мар 11, 2003 16:47:41 Спасибо за помощь |
|
|
Дата: Мар 11, 2003 19:27:52 ; Ну вот переписал под Фасм ;При каждом запуске разный хэндл в eax ;000002FC ;00000374 ;000003A4 ;У меня есть вопрос, ;Значении таких хэндлов это нормально? ;можно ли какой то утилитой посмотреть хендлы ;Может мне не верно выдает результат эта программа? ; FASM 1.45 ; Хендл Консольного окна ; Obtaining a Console Window Handle (HWND) format PE console entry start include '%inclfasm%\win32a.inc' section '.data' data readable writeable hwndFound dd 0 ; this is what is returned to the caller pszNewWindowTitle: times 1024 db 0 ; contains fabricated WindowTitle pszOldWindowTitle: times 1024 db 0 ; contains original WindowTitle formatString db '%d/%d',0 ; takes a decimal "input" - %d TickCount dd 0 CurrentProcessId dd 0 section '.code' code readable executable start: ; fetch current window title invoke GetConsoleTitle,pszOldWindowTitle,1024 ; ; format a "unique" NewWindowTitle invoke GetCurrentProcessId mov [CurrentProcessId], eax invoke GetTickCount mov [TickCount], eax ; wsprintf(pszNewWindowTitle,"%d/%d", ; GetTickCount(), ; GetCurrentProcessId()); invoke wsprintf,pszNewWindowTitle,formatString,[TickCount],[CurrentProcessId] add esp,12 ;change current window title invoke SetConsoleTitle,pszNewWindowTitle ;ensure window title has been updated invoke Sleep,40 ; ;look for NewWindowTitle ; hwndFound=FindWindow(NULL, pszNewWindowTitle); invoke FindWindow,NULL,pszNewWindowTitle mov [hwndFound], eax ;restore original window title invoke SetConsoleTitle,pszOldWindowTitle ;returns the HWND -- or NULL if the operation failed. mov eax, [hwndFound] invoke ExitProcess,0 section '.idata' import data readable writeable library kernel,'KERNEL32.DLL',\ user32,'USER32.DLL' import kernel,\ GetConsoleTitle,'GetConsoleTitleA',\ GetTickCount,'GetTickCount',\ GetCurrentProcessId,'GetCurrentProcessId',\ SetConsoleTitle,'SetConsoleTitleA',\ Sleep,'Sleep',\ ExitProcess,'ExitProcess' import user32,\ FindWindow,'FindWindowA',\ wsprintf,'wsprintfA' ;section '.rsrc' resource data readable |
|
|
Дата: Мар 11, 2003 21:14:38 |
|
|
Дата: Мар 12, 2003 20:28:12 Попробовал утилиту, HANDLE совпадают значит прога работает нормально. :-) Спасибо за помощь. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.117 |