PeekMessage z jiného okna – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

PeekMessage z jiného okna – .NET – Fórum – Programujte.comPeekMessage z jiného okna – .NET – Fórum – Programujte.com

 

ingiraxo+15
Grafoman
19. 8. 2012   #1
-
0
-

Zdravim, něco zkoušim a nějak nechápu proč to nejde přes nativní funkci.

Chtěl jsem odchytávat zprávy jako třeba stisknuté klávesy, pozici myši a různé operace s oknem přes moji aplikaci, ale nechápu proč to nejde.

// deklarace Peeku z winapi
[DllImport("User32.dll")]
public static extern bool PeekMessage(
    out Message lpMsg,
    IntPtr hWnd,
    uint wMsgFilterMin,
    uint wMsgFilterMax,
    uint wRemoveMsg);            

// ve vlastní funkci pak mám...
Process p = Process.GetProcessesByName("mspaint")[0]; // win-malovani
Message msg;

while (true)
{
    if (ProcSpy.PeekMessage(out msg, p.Handle, 0, 0, 1)) // PM_REMOVE
    {
        // toto se mi nikdy nevykona, at delam cokoli ve win-malovani
        // Console.WriteLine(msg);
        // TranslateMessage(ref msg);
        // DispatchMessage(ref msg);
    }
}

Pokud někdo víte budu rád :)

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
liborb
~ Redaktor
+18
Guru
19. 8. 2012   #2
-
0
-

Takhle to nefunguje, hledej "keyboard hook".

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.209.–
ingiraxo+15
Grafoman
19. 8. 2012   #3
-
0
-

Já nechci něco jako keylogger, ale odchytávat všechny zprávy okna a měnit je, kreslit na jinou aplikaci, měnit ji apod.

koukal jsem, že nejspíš bez hooku to nepůjde no, ale tady moc nevim jak presně na to :/

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
liborb
~ Redaktor
+18
Guru
19. 8. 2012   #4
-
0
-

Ty se snažíš vybrat zprávu z fronty zpráv. Ovšem tu normálně zpracovává k tomu registrovaná funkce. Tu můžeš změnit přes SetWindowLong, ale jenom ve stejném procesu. Mezi procesy se do toho musíš vlámat s pomocí systému - udělat hook. A jak to udělat ti napoví strejda google, toho je na netu mraky.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.208.–
ingiraxo+15
Grafoman
19. 8. 2012   #5
-
0
-

takže předpokládám, že jinak, než injectnout libku s hookem do toho procesu to nepůjde...

já vim, že když chci odchytnout třeba jenom klávesnici, tak k tomu stačí SetWindowsHookEx, ale když teda chci odchytnout pouze z jednoho procesu a né z celýho systému, tak už potřebuju přímo hooknout to aplikaci přes libky?

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
liborb
~ Redaktor
+18
Guru
19. 8. 2012   #6
-
0
-

Asi ano, jestli tím myslíš to, co si myslím, že by sis měl myslet :D. V tom tvém kódu si získal HWND okna a po nastavení hooku ho budeš v té tvé funkci používat pro filtrování. Ostatní pošleš bez povšimnutí dál.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.216.–
liborb
~ Redaktor
+18
Guru
19. 8. 2012   #7
-
0
-

A abych byl konkrétnější, tak tebe bude asi zajímat WH_CALLWNDPROC, kde si vlastně vybereš ten tvůj proces, jenom nezapomeň, že přes ní jdou všechny zprávy pro všechny okna v dané aplikaci, takže ten filtr.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.217.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 10 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý