Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Kde se koná výstava fotografií Luďka Vojtěchovského?

V dnešní soutěži hrajeme o:



zjisteni jestli process (podle ID) ma vyditelne okno

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: zjisteni jestli process (podle ID) ma vyditelne okno

Autor: Petr22 ♂

0:31:01 19.09.2012

RadekChalupa napsal/a

Tohle je kus kódu kde načítám ze služby opis obrazovky, takže se dá takhle nějak dostat na okna
[code]
RPC_BINDING_HANDLE h = 0;
DWORD dwGuiThreadId = 0;
DWORD dwThreadId;
HWINSTA hwinstaSave;
HDESK hdeskSave;
HWINSTA hwinstaUser;
HDESK hdeskUser;
GetDesktopWindow();
hwinstaSave = GetProcessWindowStation();
dwThreadId = GetCurrentThreadId();
hdeskSave = GetThreadDesktop(dwThreadId);
RpcImpersonateClient(h);
hwinstaUser = OpenWindowStation(L"WinSta0", FALSE, MAXIMUM_ALLOWED);
if (hwinstaUser == NULL)
{
RpcRevertToSelf();
_com_raise_error(AtlHresultFromLastError());
}
SetProcessWindowStation(hwinstaUser);
hdeskUser = OpenDesktop(L"Default", 0, FALSE, MAXIMUM_ALLOWED);
RpcRevertToSelf();
if (hdeskUser == NULL)
{
SetProcessWindowStation(hwinstaSave);
CloseWindowStation(hwinstaUser);
_com_raise_error(AtlHresultFromLastError());
}
SetThreadDesktop(hdeskUser);
dwGuiThreadId = dwThreadId;

// ....
// načtení do bitmapy, zde nevýznamné
// ....

SetThreadDesktop(hdeskSave);
SetProcessWindowStation(hwinstaSave);
CloseDesktop(hdeskUser);
CloseWindowStation(hwinstaUser);
[/code]

Radek Chalupa
- vývoj software na zakázku
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC)
http://www.radekchalupa.cz




MOC MOC DIK sam dohromady bych to nedal vim ze takto to nejak ma byt ... diky

Citovat příspěvek

 

Re: zjisteni jestli process (podle ID) ma vyditelne okno

Autor: RadekChalupa ♂

20:02:25 12.09.2012

Tohle je kus kódu kde načítám ze služby opis obrazovky, takže se dá takhle nějak dostat na okna
[code]
RPC_BINDING_HANDLE h = 0;
DWORD dwGuiThreadId = 0;
DWORD dwThreadId;
HWINSTA hwinstaSave;
HDESK hdeskSave;
HWINSTA hwinstaUser;
HDESK hdeskUser;
GetDesktopWindow();
hwinstaSave = GetProcessWindowStation();
dwThreadId = GetCurrentThreadId();
hdeskSave = GetThreadDesktop(dwThreadId);
RpcImpersonateClient(h);
hwinstaUser = OpenWindowStation(L"WinSta0", FALSE, MAXIMUM_ALLOWED);
if (hwinstaUser == NULL)
{
RpcRevertToSelf();
_com_raise_error(AtlHresultFromLastError());
}
SetProcessWindowStation(hwinstaUser);
hdeskUser = OpenDesktop(L"Default", 0, FALSE, MAXIMUM_ALLOWED);
RpcRevertToSelf();
if (hdeskUser == NULL)
{
SetProcessWindowStation(hwinstaSave);
CloseWindowStation(hwinstaUser);
_com_raise_error(AtlHresultFromLastError());
}
SetThreadDesktop(hdeskUser);
dwGuiThreadId = dwThreadId;

// ....
// načtení do bitmapy, zde nevýznamné
// ....

SetThreadDesktop(hdeskSave);
SetProcessWindowStation(hwinstaSave);
CloseDesktop(hdeskUser);
CloseWindowStation(hwinstaUser);
[/code]

Radek Chalupa
- vývoj software na zakázku
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC)
http://www.radekchalupa.cz

Citovat příspěvek

 

zjisteni jestli process (podle ID) ma vyditelne okno

Autor: Petr22 ♂

14:10:31 09.09.2012

Dobry den,

mam tady takovy maly problem .... mam aplikaci,ktera bezi jako sluzba , emuluji procesy a potreboval bych zjistit jestli proces ma vyditelne okno (jestli nebezi na pozadi ... zadne GUI) zkousel jsem enumwindows funkci, abych zjistil HWND procesu a pote jsem chtel zkusit funkci iswindowvisible - ale jelikoz program bezi jako sluzba (session 0 - WIN 7 ) tak zadna okna nedostanu protoze sluzba ma vlastni desktop. Potreboval bych poradit jak ziskat tuto informaci od "User Desktopu - session 1" kde bezi vsechny uzivatelske procesy ....

Predem dekuji za rady , Petr

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: