WINDOWS PROGRAMMING
5 отговора
322 прегледа
WINDOWS PROGRAMMING
#include <windows.h> //0
void main() //1
{ //2
HINSTANCE h_Inst=GetModuleHandle(NULL);//3
MessageBox(NULL,NULL,NULL,MB_OK); //4
} //5
//това е работещ DOS код в който успешно се вика Win32 API функция
//по интересно е следното
//очевидно да се получи манилулатор на приложението е просто
//но как да се получи манипулатор на прозореца?
//очаквам отговори по същество ,а не такива които обсъждат имали или няма
//смисъл горното
void main() //1
{ //2
HINSTANCE h_Inst=GetModuleHandle(NULL);//3
MessageBox(NULL,NULL,NULL,MB_OK); //4
} //5
//това е работещ DOS код в който успешно се вика Win32 API функция
//по интересно е следното
//очевидно да се получи манилулатор на приложението е просто
//но как да се получи манипулатор на прозореца?
//очаквам отговори по същество ,а не такива които обсъждат имали или няма
//смисъл горното
Re: WINDOWS PROGRAMMING
(работещ *DOS* код??? )
предполагам искам да вземеш handle на console прозореца.
един от начините (грозен) е веднага след стартиране на приложението да извикаш GetForegroundWindow()
"официалният" начин който MS казва (Q124103) (също грозен):
Call GetConsoleTitle() to save the current console window title.
Call SetConsoleTitle() to change the console title to a unique title.
Call Sleep(40) to ensure the window title was updated.
Call FindWindow(NULL, uniquetitle), to obtain the HWND this call returns the HWND -- or NULL if the operation failed.
Call SetConsoleTitle() with the value retrieved from step 1, to restore the original window title.
друг начин за който се сещам е да се enum-ерират всички top-level прозорци и за всеки от тях с GetWindowThreadProcessId() да се проверява дали не е като GetCurrentProcessId() т.е. "нашият" прозорец.
последно. в Win2000 има функция HWND GetConsoleWindow(VOID) - но в зависимост от това с какво SDK си, може да го няма в header-ите и в import библиотеката на kernel32 - така че или с GetProcAddress() или трябва да си направиш нова(допълнителна) import library за kernel32.dll
предполагам искам да вземеш handle на console прозореца.
един от начините (грозен) е веднага след стартиране на приложението да извикаш GetForegroundWindow()
"официалният" начин който MS казва (Q124103) (също грозен):
Call GetConsoleTitle() to save the current console window title.
Call SetConsoleTitle() to change the console title to a unique title.
Call Sleep(40) to ensure the window title was updated.
Call FindWindow(NULL, uniquetitle), to obtain the HWND this call returns the HWND -- or NULL if the operation failed.
Call SetConsoleTitle() with the value retrieved from step 1, to restore the original window title.
друг начин за който се сещам е да се enum-ерират всички top-level прозорци и за всеки от тях с GetWindowThreadProcessId() да се проверява дали не е като GetCurrentProcessId() т.е. "нашият" прозорец.
последно. в Win2000 има функция HWND GetConsoleWindow(VOID) - но в зависимост от това с какво SDK си, може да го няма в header-ите и в import библиотеката на kernel32 - така че или с GetProcAddress() или трябва да си направиш нова(допълнителна) import library за kernel32.dll
Re: WINDOWS PROGRAMMING
Ne narichaj DOS prilojenie konzolno takowa!
I sled kato poluchish handle - ko sha si go prajsh?
neshto kato PosMessage (HWND,WM_SIZE,rand(),rand())?
towa e naj interesnoto za koeto se sehtam
I sled kato poluchish handle - ko sha si go prajsh?
neshto kato PosMessage (HWND,WM_SIZE,rand(),rand())?
towa e naj interesnoto za koeto se sehtam
Re: WINDOWS PROGRAMMING
Много обичам кадърните отговори този е такъв и благодаря за помоща.
Re: WINDOWS PROGRAMMING
Ако това което съм намислил стане ще публикувам кода в този клуб.