· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Как узнать хендл консольного окна

Посл.отвђт Сообщен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

Нормально. Утилита:
http://comrade.shacknet.nu/tmp/winview.zip


Дата: Мар 12, 2003 20:28:12

Попробовал утилиту, HANDLE совпадают значит
прога работает нормально.
:-) Спасибо за помощь.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.117