Programmabläufe Automatisieren
lima-city → Forum → Programmiersprachen → C/C++ und D
auslese
befehl
code
dank
date
datum
eingabe
feld
fokus
forum
funktion
hardware
modeln
output
position
programm
speichern
url
wert holen
windows
-
HOI,
also ich würde gerne in c++ programmabläufe für windows automatisieren, sprich ich will nen feld z.B. von einem Programm auslesen und dann entsprechend vom wert optionen in dem Programm aktiviern oder deaktiviern (sind check boxen) ....
wie kann ich so was machen ???
danke schon mal für die Antwort
cya -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wenn du Programmabläufe automatisieren willst, warum benutzt du dann kein Scriptprogramm wie AutoIt?
Ist bestimmt einfacher, als es per Hand in C++ zu schreiben. -
hab bei dem teil leider keine funktion gefunden womit ich die werte z.b aus einem feld auslesen kann
und des kann ich halt mit c ++ schon machen wenn ich direkt in aus dem speicher eines programms lese ....
cya -
thunderlord schrieb:
hab bei dem teil leider keine funktion gefunden womit ich die werte z.b aus einem feld auslesen kann
und des kann ich halt mit c ++ schon machen wenn ich direkt in aus dem speicher eines programms lese ....
cya
ja, dann suche mal schön im Seicher nach den Werten... natürlich kannst du das machen...
und da das Programm immer neu in den Speicher geladen wird, kannst du immer neu nach den Positionen suchen
von daher ist dein Vorhaben aussichtslos... selbst wenn du es fertigbringst, die struktur der Daten im RAM zu ermitteln, bis dahin waren 3 neue Programmversionen da und du kannst von Vorne beginnen... -.-
was denkst du, wie die Daten im RAM gespeichert sind? dnekst du, du gibst den Objektnamen an und bekommst die dazugehörige Nummer???
was denkst du, warum so wenige was mit den Bluescreen-Medlungen anfangen können, in denen meist 20-Zeichen Lange Hex-Zahlen stehen? Weil eben nciht dahinter steht, welchem Element, ja nicht mal welchem Prozess dieser Wert zugeordnet wird... du bekommst über den Prozess raus, welche Werte ihm zugeordnet sind, aber das sind dann nur hintereinandergelistete werte... -.- -
kannst du auch mit autoit
was du auslesen willst musst du mit dem fokus makieren
und dann mit read oder get den wert holen -
kannst du auch mit autoit
was du auslesen willst musst du mit dem fokus makieren
und dann mit read oder get den wert holen
Ja, ein bisschen googlen vorher schadet nicht....dann hättest du auch die vollständige Dokumentation zu allen Befehlen gefunden.
Klick ma einfach auf den Link, den ich oben schon gepostet hab, thunder.
Beitrag zuletzt geändert: 18.3.2010 18:22:29 von adelwoehrer -
Ok sorry das mit autoit habe ich nicht gewusst.... habe dazu irgend wann mal in der c't nen bericht dazu gelesen und dann selber damit herumprobiert und hab nicht in der richtung dazu gelesen.. JJJJAAAAAAAAAA JJJJAAAAAAAAA mein fehler ^^
Hab jetzt mal mit den tutorials angefangen und wie ich sehen schickt autoit die befehle direkt an das programm oder ???
sprich ich könnte des zu automatisierende programm auch im minimierten modus laufen lassen oder ???
cya -
Ja, aber nur mit einem kleinen Zusatzbefehl, damit er sämtliche vom User getätigte Eingaben ignoriert.
Dann läuft das Script auch unabhängig im Hintergrund.
Den Befehl solltest du im Tutorial finden....ich werd ihn auch mal suchen. =)
EDIT: Der Befehl lautet: BlockInput(1)
Damit werden sämtliche Eingaben des Benutzers wie gesagt ignoriert.
Um die Funktion wieder auszuschalten, verwende einfach BlockInput(0).
schickt autoit die befehle direkt an das programm oder ???
Ich glaube, mit dem send-Befehl nicht....da simuliert er bloß Tastendrücke, als wenn du sie auf der Tastatur eingegeben hättest.
Es gibt aber bestimmt auch Möglichkeiten, das Programm direkt anzusprechen.
Beitrag zuletzt geändert: 22.3.2010 10:38:34 von adelwoehrer -
bin noch nicht mit dem ganzen tutorial durch, sorry wenn also die frage bischen unnötig war. und danke für deine schnelle antwort.
und die andere geschichte was ich noch nicht so wirklich gefundne habe, autoit ist ja wie ne programmiersprache auftgebaut, hab ich da nen interface zur pc hardware oder so was das ich z.b. lpt oder auf com in mein script einbauen kann um so dateneingaben vom rs232 protokoll zu nutzen ???
cya -
Ja, geht auch.
Auf Hardware kann zugegriffen werden....sofern du den richtigen Befehl dazu findest.
Hier mal ein Code-Schnipsel, das ein paar Sachen ausliest....einfach mal in ne Textdatei (oder wenn du Scite hast da rein) und mit AutoIt ausführen.
Das selbe gibts bestimmt auch für deine Verwendungszwecke.
#Include <Constants.au3> Dim $strComputer, $objWMIService Const $wbemFlagReturnImmediately = 0x10 Const $wbemFlagForwardOnly = 0x20 $strComputer = inputbox( "Please enter the name of the computer you want", "Input","localhost") $objWMIService = ObjGet("winmgmts:{(RemoteShutdown)}//" & $strComputer & "\root\CIMV2") _Read_BioS() _Read_CPU() _Read_OS() _Read_OS_Inst() _Read_DriveInfo() Func _Read_BioS() Local $colItems = "" $colItems = $objWMIService.ExecQuery("Select * from Win32_BIOS") For $objItem in $colItems Local $item = $objItem.SerialNumber MsgBox(0,'Output','Bios Serial #: ' & $Item) Next EndFunc Func _Read_CPU() Local $colItems = "" $colItems = $objWMIService.ExecQuery("Select * from Win32_Processor") For $objItem in $colItems Local $item = $objItem.Name MsgBox(0,'Output','CPU Type: ' & $Item) Next EndFunc Func _Read_OS() Local $colItems = "" $colItems = $objWMIService.ExecQuery("Select * from Win32_OperatingSystem") For $objItem in $colItems Local $item = $objItem.SerialNumber MsgBox(0,'Output','OS Serial #: ' & $Item) Next EndFunc Func _Read_OS_Inst() Local $colItems = "" $colItems = $objWMIService.ExecQuery("Select * from Win32_OperatingSystem") For $objItem in $colItems Local $date = $objItem.InstallDate $CDate = (StringMid($Date, 5, 2) & "/" & _ StringMid($Date, 7, 2) & "/" & StringLeft($Date, 4) _ & " " & StringMid ($Date, 9, 2) & ":" & _ StringMid($Date, 11, 2) & ":" & StringMid($Date, _ 13, 2)) MsgBox(0,'Output','Install Date/Time #: ' & $CDate) Next EndFunc Func _Read_DriveInfo() Local $colItems = "" $colItems = $objWMIService.ExecQuery ("SELECT * FROM Win32_DiskDrive", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly) For $objItem in $colItems Local $item = $objItem.Model MsgBox(0,'Output','Drive Model : ' & $Item) Local $item = $objItem.Signature MsgBox(0,'Output','Drive Signature : ' & $Item) Next EndFunc
Viel mehr kann ich dann aber auch nicht mehr helfen.
Für solche Sachen hatte ich bisher noch nie ne Verwendung....ich routiniere eher Installationen für Firmen damit.
Beitrag zuletzt geändert: 22.3.2010 19:14:17 von adelwoehrer -
Weist du noch wo du das her hast???
Den Beispielcode da oben hab ich vom AutoIt-Forum.
Währe wohl die erstbeste Anlaufstelle für dich.
Ansonsten liefert auch google sehr gute Ergebnisse durch Eingabe der Wörter "AutoIt" und "Hardware". -
Bin im Forum schon angemeldet, aber ist nen bischen unübersichtlich wenn ich nicht so richtig den plan hab wonach ich suchen muss ^^
cya -
Hi,
Wenn Du unter windows mit cpp programmierst,
probiers mal mit "windows.h"
#include <windows.h>
...
// cusor position setzen (x und y beziehen sich auf obere linke ecke)
SetCursorPos(100,100);
// click links
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
viel spaß
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage