Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Öffnen von Programmen und simulieren von Tastenkombinationen (https://www.delphipraxis.net/112138-oeffnen-von-programmen-und-simulieren-von-tastenkombinationen.html)

MAWE 15. Apr 2008 17:13


Öffnen von Programmen und simulieren von Tastenkombinationen
 
Ich hab folgendes Problem, und zwar muss sich ein Programm nach dem Start automatisch öffnen und starten.

Nun muss ich ein Programm schreiben mit dem ich zuerst das Programm öffne(.exe), dann die Tastenkombinationen ALT+Z und ALT+S nacheinander simuliere. Dieses geschriebene Programm möchte ich dann in den Autostart kopieren.

Ich hab keine Ahnung ob oder wie das geht.

Würde mich über eine baldige Rückmeldung tierisch freuen.

MFG

Matthias

P.s sollte ich im falschen Themenbereich sein tut es mir leid, wusste nicht wo ich es sonst hätte reinschreiben sollen

Dbof 15. Apr 2008 17:57

Re: Öffnen von Programmen und simulieren von Tastenkombinati
 
Hört sich nach Virenverbreitung an ... :? :? Wieso in den Autostart Ordner ??

###Sorry, dass ich gleich an was Schlimmes denke, war ein dummer Post###

lbccaleb 15. Apr 2008 17:59

Re: Öffnen von Programmen und simulieren von Tastenkombinati
 
erstmal hallo und herzlich willkommen in der dp!! :dp: :dp:


um es kurz zu sagen, ja es ist möglich solch einprogramm umzuseten...
um ein programm zu starten schau dir mal den befehl "Shellexecute" an (ggf googeln oder hier suchen)


Delphi-Quellcode:
Shellexecute(hwnd, 'open', PChar('deinprogramm.exe'), nil, nil, SW_SHOWNORMAL);


um die tasten zu übermitteln musst du sie als nachricht an dein geöffnetes programm schicken, hierzu solltest du hier im forum auch was finden..

Macci 15. Apr 2008 18:38

Re: Öffnen von Programmen und simulieren von Tastenkombinati
 
Zitat:

Zitat von Dbof
Hört sich nach Virenverbreitung an ... :? :? Wieso in den Autostart Ordner ??

Richtig, Microsoft hat den Autostartornder speziell für Virenentwickler entworfen, und die gefährlichen Tastenkombinationen ALT+Z und ALT+S führen bekanntlich auch zum sofortigen Formatieren aller Festplatten :roll:

Macci 15. Apr 2008 18:51

Re: Öffnen von Programmen und simulieren von Tastenkombinati
 
Hi,

Tastenklicks kannst du übrigens so simulieren:

Delphi-Quellcode:
procedure PostKeyEx32(key: Word; const shift: TShiftState; specialkey: Boolean) ;
{
Parameters :
* key : virtual keycode of the key to send. For printable keys this is simply the ANSI code (Ord(character)) .
* shift : state of the modifier keys. This is a set, so you can set several of these keys (shift, control, alt, mouse buttons) in tandem. The TShiftState type is declared in the Classes Unit.
* specialkey: normally this should be False. Set it to True to specify a key on the numeric keypad, for example.
}
type
   TShiftKeyInfo = record
     shift: Byte ;
     vkey: Byte ;
   end;
   ByteSet = set of 0..7 ;
const
   shiftkeys: array [1..3] of TShiftKeyInfo =
     ((shift: Ord(ssCtrl) ; vkey: VK_CONTROL),
     (shift: Ord(ssShift) ; vkey: VK_SHIFT),
     (shift: Ord(ssAlt) ; vkey: VK_MENU)) ;
var
   flag: DWORD;
   bShift: ByteSet absolute shift;
   j: Integer;
begin
   for j := 1 to 3 do
   begin
     if shiftkeys[j].shift in bShift then
       keybd_event(shiftkeys[j].vkey, MapVirtualKey(shiftkeys[j].vkey, 0), 0, 0) ;
   end;
   if specialkey then
     flag := KEYEVENTF_EXTENDEDKEY
   else
     flag := 0;

   keybd_event(key, MapvirtualKey(key, 0), flag, 0) ;
   flag := flag or KEYEVENTF_KEYUP;
   keybd_event(key, MapvirtualKey(key, 0), flag, 0) ;

   for j := 3 downto 1 do
   begin
     if shiftkeys[j].shift in bShift then
       keybd_event(shiftkeys[j].vkey, MapVirtualKey(shiftkeys[j].vkey, 0), KEYEVENTF_KEYUP, 0) ;
   end;
end;
Wenn du damit Tastenklicks simulieren willst, an ein Programm, desen Entwickler explizit wollen, dass der User selbst Tasten drückt (z.B. Surfbars, wo überwacht werden soll, dass jemand vor dem Bildschirm sitzt), solltest du lieber einen Treiber benutzen.

Wie man ein Proggy starten kann, wurde hier ja bereits beantwortet.

Viele Grüsse,
Macci

Der.Kaktus 15. Apr 2008 19:05

Re: Öffnen von Programmen und simulieren von Tastenkombinati
 
Zitat:

Zitat von Dbof
Hört sich nach Virenverbreitung an ... :? :? Wieso in den Autostart Ordner ??

###Sorry, dass ich gleich an was Schlimmes denke, war ein dummer Post###

Es muessen nich alle "tastenklicks" gleich Viren sein..;-)

bigben37 15. Apr 2008 20:23

Re: Öffnen von Programmen und simulieren von Tastenkombinati
 
Zitat:

Zitat von lbccaleb
um es kurz zu sagen, ja es ist möglich solch einprogramm umzuseten...
um ein programm zu starten schau dir mal den befehl "Shellexecute" an (ggf googeln oder hier suchen)


Delphi-Quellcode:
Shellexecute(hwnd, 'open', PChar('deinprogramm.exe'), nil, nil, SW_SHOWNORMAL);

Du kannst das auch mit diesem Code von Luckie machen weil, wie Luckie sagte:

Zitat:

Laut PSDK dient Shellexecute nicht dazu eine fremde Anwendung zu starten, sondern
Zitat:


Performs an operation on a specified file
.
Also um zum Beispiel eine Textdatei zu drucken ruft man Shellexecute mit dem Verb 'print' und der entsprechenden Datei auf. Das man damit auch fremde Anwendungen starten kann ist ein Abfallprodukt und ist eher als Mißbrauch zu sehen.

squetk 15. Apr 2008 21:48

Re: Öffnen von Programmen und simulieren von Tastenkombinati
 
Zum Thema der "Fernsteuerung" per Senden von Tastencodes hilft dies weiter:
http://entwickler.de/itr/features/ps...nodeid,77.html

Macci 16. Apr 2008 12:27

Re: Öffnen von Programmen und simulieren von Tastenkombinati
 
@bigben37:

Wieso Missbrauch? Eine Datei auszuführen ist eine ganz normale Funktion von shellexecute, ohne wenn und aber. Und "Performs an operation on a specified file" ... naja was soll das schon bedeuten? Ausführen IST eine Operation an einer spezifizierten Datei. Das hat nichts mit Missbrauch zu tun, sondern ist einfach eine stinknormale Anwendung von shellexecute. Intern macht shellexecute wahrscheinlich auch nichts großartig anderes, als den von dir verlinkten Code auszufüren, also warum das Rad neu erfinden? CreateProcess benutzt man, wenn man mehr will, als einfach nur eine Datei "irgendwie" auszuführen.

Viele Grüße,
Macci


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz