AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Öffnen von Programmen und simulieren von Tastenkombinationen
Thema durchsuchen
Ansicht
Themen-Optionen

Öffnen von Programmen und simulieren von Tastenkombinationen

Ein Thema von MAWE · begonnen am 15. Apr 2008 · letzter Beitrag vom 16. Apr 2008
Antwort Antwort
MAWE

Registriert seit: 15. Apr 2008
1 Beiträge
 
Delphi 6 Personal
 
#1

Öffnen von Programmen und simulieren von Tastenkombinationen

  Alt 15. Apr 2008, 17:13
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
  Mit Zitat antworten Zitat
Dbof

Registriert seit: 20. Mär 2008
61 Beiträge
 
#2

Re: Öffnen von Programmen und simulieren von Tastenkombinati

  Alt 15. Apr 2008, 17:57
Hört sich nach Virenverbreitung an ... Wieso in den Autostart Ordner ??

###Sorry, dass ich gleich an was Schlimmes denke, war ein dummer Post###
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Öffnen von Programmen und simulieren von Tastenkombinati

  Alt 15. Apr 2008, 17:59
erstmal hallo und herzlich willkommen in der 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)


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..
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Macci

Registriert seit: 31. Mai 2007
129 Beiträge
 
#4

Re: Öffnen von Programmen und simulieren von Tastenkombinati

  Alt 15. Apr 2008, 18:38
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
  Mit Zitat antworten Zitat
Macci

Registriert seit: 31. Mai 2007
129 Beiträge
 
#5

Re: Öffnen von Programmen und simulieren von Tastenkombinati

  Alt 15. Apr 2008, 18:51
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
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Öffnen von Programmen und simulieren von Tastenkombinati

  Alt 15. Apr 2008, 19:05
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..
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
Benutzerbild von bigben37
bigben37

Registriert seit: 19. Dez 2007
Ort: Freiburg
116 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Öffnen von Programmen und simulieren von Tastenkombinati

  Alt 15. Apr 2008, 20:23
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)


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.
Benjamin
  Mit Zitat antworten Zitat
squetk

Registriert seit: 29. Aug 2004
Ort: Cottbus
118 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Öffnen von Programmen und simulieren von Tastenkombinati

  Alt 15. Apr 2008, 21:48
Zum Thema der "Fernsteuerung" per Senden von Tastencodes hilft dies weiter:
http://entwickler.de/itr/features/ps...nodeid,77.html
  Mit Zitat antworten Zitat
Macci

Registriert seit: 31. Mai 2007
129 Beiträge
 
#9

Re: Öffnen von Programmen und simulieren von Tastenkombinati

  Alt 16. Apr 2008, 12:27
@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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:32 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