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, 10126 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

Windows Ereignisse Tracen und automatisieren?

gelöst Frage von Xanathos57Batch & Shell11 Kommentare

Hallo Administratoren, das ist mein erster Post in eurem Forum, also seid mir nicht böse falls iirgendwas nicht passt ...

Windows 10

Windows 10 Einrichtung Automatisieren

Frage von DallensteinWindows 105 Kommentare

Hallo. Ich werde in den nächsten Wochen eine ganze Menge PC mit vorinstalliertem Windows 10 Home einrichten müssen. Das ...

Windows Systemdateien

Windows Updates automatisieren mit CMD

Frage von VidcrafterWindows Systemdateien3 Kommentare

Hallo, habt ihr eine Idee wie man die Updates von Windows mithilfe von einer CMD automatisieren kann, dass heißt ...

Windows 10

Windows 10 Funktionsupdate komplett automatisieren

gelöst Frage von tRIACTIsWindows 102 Kommentare

Hallo zusammen, ich verzweifle grade an der Automatisierung des Fall Creators Update. Die Installation mit baramundi über WSUS funktioniert ...

Neue Wissensbeiträge
Backup

2016 - Restore mit WBAdmin - iSCSI Device als Sicherungsziel

Erfahrungsbericht von Henere vor 1 TagBackup1 Kommentar

Servus zusammen, was mich eben einige graue Haare gekostet hat Server 2016. Ich habe meinem Server eine weitere M2 ...

Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 3 TagenHumor (lol)8 Kommentare

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 3 TagenExchange Server9 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 4 TagenErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Heiß diskutierte Inhalte
E-Mail
Deutsche e-Mail Adresse auf iPhone in Katar. Nur Probleme
gelöst Frage von vanTastE-Mail32 Kommentare

Moin, ich habe hier in Deutschland auf einem Exchange 2013 eine e-Mail Adresse (name@domain.de) für einen Kollegen in Katar ...

Windows Server
Domäne beitreten nicht möglich, unter VMWare windows Server 2016 Core
Frage von AmanuelWindows Server12 Kommentare

Ich habe auf meinem Mac unter VMWare Windows Server 2016 Core und Windows Server 2016 Desktopversion installiert. Beide Systeme ...

RedHat, CentOS, Fedora
OTRS 5 kann keine Mails mehr abrufen
gelöst Frage von opc123RedHat, CentOS, Fedora11 Kommentare

Hallo, OTRS kann keine Mails mehr abrufen. Verschicken ja. Dadurch kommen keine Tickets mehr rein. Gibt es Anlaufpunkte was ...

Windows Server
Server 2016 Autotiering Storage Space
Frage von HenereWindows Server11 Kommentare

Servus, ich habe jetzt ein StorageSpace auf einem Server 2016 in Betrieb zum Testen. 1x M2 mit 512GB (970pro) ...