18. maj 2000 - 17:04Der er
7 kommentarer og 1 løsning
styre musen i andre programmer
Er der nogen der har noget kode til hvordan man kan lave en slags "muse-optager" altså et program til at optage musens bevægelser henover skærmen og hvad den klikker på.. Og så derefter kan afspille det igen..?
Delphi som sådan understøtter ikke musebevægelser i andre programmer (eller i windows), men har kun OnMouseDown/-Up og -Over for det program du laver i delphi, men du bør kunne "grappe" den message der sendes fra alle programmer til Windows for at få flyttet musen. Så det vil være et spørgsmål om at lave et program der ser på alle windows messages og piller dem ud der har med musebevægelser at gøre, gemme de data der er med (eller hele meddelelsen) og så sende den videre igen.
Jeg har desværre ingen eksempler på lige netop musebevægelser men der findes mange eksempler på hvordan du kan se de meddelelser windows sender/modtager og hvad du kan gøre ved/med dem. Se under Delphi og Samples for eksempler på "Windows Message Hook".
The ReadConsoleInput function can be used to directly access a console's input buffer. When a console is created, mouse input is enabled and window input is disabled. To ensure that the process receives all types of events, this example uses the SetConsoleMode function to enable window and mouse input. Then it goes into a loop that reads and handles console input events.
Read- og WriteConsoleInput er kun noget man kan arbejde med i dos-vinduer.. Så vidt jeg kan se..?? Men jeg tror jeg har fundet noget mere interessant.. Disse funktioner, konstanter skulle kunne gøre det.. SetWindowsHookEx, MouseProc, WH_KEYBOARD Jeg har også fundet et eksempel i win32.. Se efter "Monitoring System Events"
Problemet er at eksemplet er i C.. Så hvis en eller anden har et tilsvarende eksempel i Delphi, jeg kan bruge, så giver jeg de 100 point..
De følgende tre programmer viser hvordan man sætter et Windows hook til at fange system keystrokes og gemmer dem i en fil. Disse programmer bruger WH_KEYBOARD hook'et men kan næmt anvendes på en hvilken som helst of de tilgænglige hool kalsser.
Siden ingen af disse applicationer kræver noget af Delphi's standard application framework bør de blive gemt som .dpr filer.
Startup Starter hoved programmet som en selvstendig process for at undgå den optræder i Windows' tasklist. Du skal ændre 'ProgramName' constanten til at pege på SNOOP exe filen. Dette step kan dog udelades hvis du er ligeglad med en entry i task bar'en.
Snoop Dette modul loader SNOOPDLL modulet of instalerer det som et keyboard hook. Programmet udfører en infinite sleep for at DLL handle'et forbliver valid. Jeg har inkluderet den nødvendige cleanup code selvom den i dette eksempel aldrig bliver kaldt.
SnoopDll Dette er DLL'en som udfører det etenlige arbejde. Filen bliver åbnet og lukket ved hvert kald, for at filen kan blive tilgået når som helst. Dette krerer nødvendigvis en masse I/O, som kan ungås med noget buffer kode.me buffering code.
program startup; uses Windows; {$R *.RES}
const ProgramName = 'SNOOP.EXE'; var StartupInfo : TStartupInfo; ProcessInformation : TProcessInformation; Begin GetStartupInfo(StartupInfo); CreateProcess(ProgramName,Nil,Nil,Nil,False,DETACHED_PROCESS,Nil,Nil,StartupInfo, ProcessInformation); end.
program Snoop; uses Windows; {$R *.RES}
var Hook : HHOOK; DllInstance : DWORD; HookProc : FARPROC;
Jeg implementerede et keyboardhook til dig .. Det skulle illustere hvordan man lavede et hook ind i windows .... Hvis det ikke er det du vil have hvad er det så ?
Tak mange gange.. Undskyld jeg ikke har svaret før nu..!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.