Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Windows-Programme automatisieren (z.B. mit VBScript)

Mitglied: TS-Tec

TS-Tec (Level 1) - Jetzt verbinden

05.04.2006, aktualisiert 11:42 Uhr, 10145 Aufrufe, 2 Kommentare

Hallo!

Habe folgende Problemstellung.
Ich möchte ein Programm automatisch öffen, ein paar Aktionen ausführen (Radio-Boxes setzen, zu einem Eingabefeld gehen und ein paar Tastatureinträge machen...) und anschließend das Programm wieder schließen. Dies sollte recht zuverlässig funktionieren (Netzwerkrechner) und sollte z.B. nicht abhänig von z.b. der Fensterposition sein.
Hab schon bisschen mit VB-Script rumgespielt (mit TAB vorgehüpft und so), ist mir aber zu ungenau weil ich die Buttons z.B. nicht genau identifizieren kann um sicher zu gehen das es der richtige ist...
Habt ihr ne Lösung wie man sowas realisieren kann, ähnlich wie z.b. bei Softwareverteilsystemen??

Danke schon mal für eure Hilfe!

Gruß
Tobias


PS: Zum besseren Verständnis hier die genau Befehlsabfolge: Programm öffnen --> Dateipfad-Button 1 anklicken --> Dateipfad eintragen --> OK klicken --> Checkbox setzen --> Dateipfad-Button 2 anklicken --> Dateipfad eintragen --> OK klicken --> F6 drücken --> warten bis fertig --> Programm schließen.
Mitglied: pi314
05.04.2006 um 11:41 Uhr
Hoi,

ich kann dir mal ein Beispiel in C++ sagen, wie das geht:

01.
#include "string.h"
02.
#include <windows.h>
03.
                      
04.
//nützliches Makro um schreibarbeit zu sparen...
05.
#define CHECKNULLHWND(hWnd,msgboxmsg,msgboxcaption,abbruchlabel) \
06.
          if(!hWnd)                                              \
07.
          { MessageBox(NULL,msgboxmsg,msgboxcaption,MB_OK);      \
08.
            goto abbruchlabel;                                   \
09.
          }                                                      \
10.
 
11.
//====================================================================================
12.
// main()
13.
//====================================================================================
14.
int main(int argc, char* argv[])
15.
{
16.
//Trick um Warnings zu unterdrücken (die meisten Compiler kennen das)
17.
  argc;
18.
  argv;
19.
 
20.
//var
21.
  HWND hWnd,hWndChild;
22.
  size_t i,ilen;
23.
  const char *pszString = "Das ist der Text der übertragen wird!!! \n\nAuch Zeilenumbrüche und "\
24.
                          "Tab's sind möglich\nx\tTab\nxx\t\tTab\nxxx\t\t\tTab\n\n\n\n\n\n\n"\
25.
                          " W  W  W  33333   2222          AAAA   PPPPP  III             RRRRRR  U    U  L       ZZZZZZZ \n"\
26.
                          " W  W  W      3  2   2         A    A  P   P   I              R    R  U    U  L             Z \n"\
27.
                          " W  W  W      3      2         A    A  P   P   I              R    R  U    U  L            Z  \n"\
28.
                          " W  W  W  33333     2    ---   AAAAAA  PPPPP   I              RRRRRR  U    U  L           Z   \n"\
29.
                          " W  W  W      3    2           A    A  P       I              RR      U    U  L          Z    \n"\
30.
                          " W  W  W      3   2            A    A  P       I              R R     U    U  L         Z     \n"\
31.
                          " W  W  W      3  2    2        A    A  P       I              R   R   U    U  L        Z      \n"\
32.
                          "  WWWWW   33333  22222         A    A  P      III             R    R   UUUU   LLLLLL  ZZZZZZZ \n";
33.
//code
34.
  hWnd=FindWindow                           //Handle vom Notepad suchen
35.
         (NULL,(LPCTSTR)"Unbenannt - Editor");
36.
  CHECKNULLHWND(hWnd,"Kein Notepad offen. Bitte ein leeres Notepad öffnen. ","Info",abbruch)
37.
  
38.
    
39.
  hWndChild=NULL;                           
40.
  hWnd=FindWindowEx                         //Handle des Editfeldes vom Notepad suchen
41.
    (hWnd,hWndChild,(LPCTSTR)"Edit",NULL);
42.
  CHECKNULLHWND(hWnd,"Hmmm das sollte nicht passieren: Das Eingabefeld vom Notepad konnte nicht gefunden werden! ","Info",abbruch)
43.
 
44.
 
45.
  ilen = strlen(pszString);                 //Länge des zu sendenden Strings bestimmen
46.
  for(i=0;i<ilen;i++)                       //Vom ersten bis zum letzten Zeichen übertragen
47.
  {
48.
    PostMessage                             //WM_CHAR-Nachricht posten
49.
      (hWnd,WM_CHAR,pszString[i],0);
50.
 
51.
    // So kommt es von der Tastatur, blos hier muessen eben VK's (VK_TAB etc.) gesendet werden. 
52.
    // Außerdem ist Shift etc. zu drücken wenn man z.B. ein großes A will. Einfacher ist da schon die 
53.
    // fertige WM_CHAR-Nachricht zu senden (TranslateMessage in der MessageLoop baut die beiden folgenden Nachrichten
54.
    // sowieso in eine WM_CHAR um, die dann von der Anwendung verarbeitet wird)
55.
    //PostMessage(hWnd,WM_KEYDOWN,'A',0x001E0001);
56.
    //PostMessage(hWnd,WM_KEYUP  ,'A',0xC01E0001);
57.
  }
58.
 
59.
	return 0;
60.
abbruch:
61.
  return 1;
62.
}


Mit FindWindowEx suchst du dein Fenster, in dem du die Sachen ausführen möchtest.
Um den Namen der Controls herauszufinden, die du benutzen willst, kann ich die MS Spy++ empfehlen. Das hat eine Suchfunktion,
mit der du sämtliche Fenster beobachten kannst, was die einzelnen Controls für Namen haben. Ist glaub ich beim Visual Studio dabei.

Mit der Funktion PostMessage kannst du dann das ausführen, was du haben willst (Enter drücken, String eingeben, etc.)
Achtung: wenn du ein KEYDOWN absetzt, musst du auch ein KEYUP machen, quasi für Taste drücken und wieder loslassen..
Ist ein bisschen Spielerei, aber geht eigentlich ganz gut...


Hoffe, konnt dir ein wenig weiterhelfen.

Falls du noch Fragen hast, einfach posten
Bitte warten ..
Mitglied: pi314
05.04.2006 um 11:42 Uhr
hm, sorry,

die Formatierung hat er nicht so übernommen, wie ich das gemeint hab,
hab bei der Vorschau nicht so drauf geachtet
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

VBscript - WMI - ServerAddress + ConnectionStatus (Windows 7)

gelöst Frage von Highend01Batch & Shell10 Kommentare

Hi zusammen, ich kann "ServerAddress" + "ConnectionStatus" für eine VPN-Verbindung allein durch ihren Namen (z.B. "Work VPN") unter Windows ...

Windows 7

Windows 7: Per VBScript Netzwerkdrucker ersetzen

Frage von donnyS73lbWindows 71 Kommentar

Hallo zusammen, ich habe folgendes vor: Ich möchte ein VBScript schreiben, dass mit Hilfe eines speziellen Domänenusers auf dem ...

Microsoft Office

Outlook VBScript

gelöst Frage von NebellichtMicrosoft Office5 Kommentare

Hallo, seit ein paar Wochen werden keine VBScripte hinter den (Benutzerspezifschen) Outlook Formularen ausgeführt. Hat jemand eine Lösung parat ...

Windows 8

Windows FTP standart Programm

Frage von sebastian2608Windows 84 Kommentare

Hey Leute, mal eine etwas andere Frage: Wenn ich mich über den Win Explorer mit einem FTP Server verbinde, ...

Neue Wissensbeiträge
Humor (lol)
Administrator.de Perlen
Tipp von DerWindowsFreak2 vor 1 TagHumor (lol)3 Kommentare

Hallo, Heute beim stöbern auf dieser Seite bin auf folgenden Thread aus dem Jahre 2006 gestossen: Was meint ihr? ...

Erkennung und -Abwehr
OpenSSH-Backdoor Malware erkennen
Tipp von Frank vor 2 TagenErkennung und -Abwehr

Sicherheitsforscher von Eset haben 21 Malware-Familien untersucht. Die Malware soll Hintertüren via OpenSSH bereitstellen, so dass Angreifer Fernzugriff auf ...

iOS
WatchChat für Whatsapp
Tipp von Criemo vor 5 TageniOS5 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor!
Tipp von Criemo vor 6 TageniOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
SSD zeigt falsche Werte
Frage von karl2014Festplatten, SSD, Raid25 Kommentare

Ich habe ein Problem mit der SSD in meinem Laptop mit Windows 10. Es ist eine 1Tb Platte die ...

Grafikkarten & Monitore
PCIe 1.0 Grafikkarte für 3840x2160
Frage von Windows10GegnerGrafikkarten & Monitore24 Kommentare

Hallo, mein Vater hat einen neuen Monitor gekauft, welcher eine native Auflösung von 3840*2160 hat. Diese muss jetzt auch ...

Windows 10
Windows Enterprise 1809 Eval nicht bootbar
Frage von Sunny89Windows 1022 Kommentare

Hallo zusammen, bevor ich mich jetzt noch stundenlang rumärger wollte ich euch fragen, ob Ihr die gleichen Probleme habt ...

Ubuntu
Installation freerdp 2.0.0-rc4
Frage von kristovUbuntu20 Kommentare

Hallo, möchte freerdp 2.0.0-rc4 auf linux mint 18.3 installieren, habe aber keine Ahnung, wie das funktioniert. freerdp 1.1 ist ...