Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Já Vánoce juchuchu
oslavím na Lopuchu!

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub Programování [ŽP: neomezená] (kategorie Programování) moderuje tvx.
Archiv
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
 Titulek, text příspěvku  
Opište pozpátku následující text bez prostředního znaku: oobpmoo
[ 857 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
mach 15.2.2008 14:28  876
promenne uvnitr DLL knihovnyZkousel jsem si hrat s temi hooky a programovanim DLL knihoven. Pro zacatek bych si chtel udelat program, co posloucha, jestli uzivatel kliknul a za kazdy klik udela v nejakem souboru tecku.

Udelal jsem tedy DLL knihovnu, ktera obsahuje funkci:

LRESULT __declspec(dllexport)__stdcall CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)

kterou system vola pri nejake dalosti mysi. Taky mam na zacatku souboru nadefinovanou globalni promennou:

char fn[260];

kde bych si chtel uchovavat jmeno souboru, do ktereho se zapis provadi. Jenze kdyz tuhle promennou uvnitr MouseProc zmenim, pri zpracovani nasledujici udalosti uz je semtam obsah promenny jiny (jako kdyby byla najednou neinicializovana). Konkretne se to stava, kdyz uzivatel prepne proces (okno). Vypada to, jako kdyby ta dll knihovna mela pro kazdy proces oddelenou sadu (kopii) svych promennych, ktere jsou navzajem nezavisle. Je to vubec mozny? Zkousel jsem tu promennou deklarovat jako statickou, hodit ji dovnitr #pragma data_seg(".SHARDAT") a tak dal, ale porad se to chova stejne. Pouzival VS C++ 2005.
mach 18.1.2008 10:28  875
Diky vsem, zejmena Bredymu, prozkoumam to :-)
bredy 17.1.2008 14:26  874
Hooky lze instalovat selektivně
Možná ještě efektivnější řešení je zjistit si, ve kterým vláknu to okno žije (GetWindowThreadProcessId) a pak zavolat funkci SetWindowHookEx s číslem toho vlákna. Hook se pak nainstaluje jen na to vlákno.
bredy 17.1.2008 14:20  873
machZcela určitě to jde zapomocí hooku.

Prostuduj SetWindowsHookEx.

Možná že poprvé se může zdát, že je to k něčemu jinému. Ale hooky krásně poslouží k dopravení svého kódu do cizí aplikace. Stačí napsat DLL, a zaregistrovat ho na hook. Je vcelku jedno na jaký - mě napadá WH_CBT jako efektivní řešení. Jenom je potřeba zajistit spuštění na nějakou událost, třeba na otevření příslušného okna. Tam už není problém zaháknout se na WinProc toho ovládacího prvku (seznamu) a víš vše.

Hooky lze instalovat selektivně, stačí, když v DLLMain zkontroluješ podle GetModuleFileName kde jsi. Pokud se nejedná o aplikaci, která tě zajímá, tak vrátíš FALSE, a systém zase DLL z té aplikace odloaduje.

Dál už je na tobě, jak si zajistíš komunikaci mezi tvým DLL a tvou aplikací. Můžeš použí správy, roury, sdílenou paměť. Pokud bys tápal, tak jeden skvělý článek najdeš na mých stránkách:

http://bredy.jinak.cz/?Zaklady_komunikace_mezi_procesy_ve_Windows_/75
norfin Norfin 17.1.2008 11:21  872
mach [870]: No problem je tam prave v tom ziskani handlu tech polozek, kterym chces poslat zpravu. Potom by to snad jit melo (aspon kdysi jsem neco takoveho psal a posilani zprav cizim programum rozhodne jde). Jak ale ziskat ty handly, neporadim.
tessien Tessien Of course slavery is the worst thing - that ever happened. But maybe... 17.1.2008 11:11  871
mach [870]: tak to bych si byl skoro jisty, ze nejde (pokud na to ta druha aplikace neni pripravena). Jedine nejak emulovat vylozene pohyb mysi/klikani na klavesnici.
mach 17.1.2008 11:03  870
Myslite, ze je mozny nejak ve Windows z programu vyslat zpravu (nejakou message) do jiny aplikace (kterou jsem nenapsal), aby se tak nasimulovalo kliknuti do seznamu? Jde mi o to, ze mam program, ve kterem je nejaky silene dlouhy seznam a uzivatelum se v tom spatne orientuje. Ja to potrebuju nejak vyresit, takze bych udelal malou aplikaci, ve ktere by ten seznam byl zorganizovany/vizualizovany nejakym lepsim zpusobem, a ta aplikace by prave mela simulovat to, ze se v te druhe klikne na odpovidajici polozku toho seznamu.

Cili bych se nejak potreboval dohrabat k nejakym handlum/idckum polozek toho seznamu a vyslat jim message.
hok 15.1.2008 17:43  869
King
dík moc
king King Born to be king - ... 15.1.2008 13:18  868
hoka pak si precti tohle:

http://toys.jacobian.org/presentations/2007/oscon/tutorial/
bredy 14.1.2008 21:36  867
Legendární hra Brány Skeldalu jako OpenSource. Zdrojáky k této hře jsou k dispozici pod licencí GPL na SourceForge. Je-li tu nadšenec, přidej se mezi developery. Hledáme zejmena nadšence linuxu, který by to přeportoval z Windows
kmet 14.1.2008 20:55  866
Kdokoliv: Osobně s tím moc zkušeností nemám, ale prý to funguje stejně jako SAX pro XML a se zkříženými tagy a např. chybějícími úvozovkami by problém být neměl...
king King Born to be king - ... 14.1.2008 19:01  865
djangobook.com
djangoproject.com
code.djangoproject.com
djangosnippets.org
irc://freenode.net/#django

nebo se klidne ptej tady, v djangu uz par let delam...
tessien Tessien Of course slavery is the worst thing - that ever happened. But maybe... 14.1.2008 18:50  863
hok [862]: znam, www.google.com
hok 14.1.2008 18:27  862
dotazčau
hele chci se zeptat je ti někdo kdo zná stránky které se zabývají Djangou?? respektive spíš nějaké tutoše atd.
dík moc
huh huh 14.1.2008 17:35  861
Kdokoliv [856]: libxml umi i HTML, to se tyka jak C, tak i PHP (a predpokladam i dalsich, co ho wrapujou)
Python ma jak XML (pouziva tusim Expat), tak i HTML parser (dokonce 2)

[ 857 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt