BB mit WinAPI

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Ananas

Betreff: BB mit WinAPI

BeitragMi, Jul 21, 2010 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
meine Frage jetzt gehört wohl in den Beginners-Corner des Beginners-Corners aber da ich echt nicht weiter weiss muss ich halt fragen:

Ich würde gerne ein kleines Programm schreiben, das in bestimmten Zeitabständen an benutzerdefinierten Orten auf dem Bildschirm klicken soll. So dass das Programm sich dann zum Beispiel in anderen Games automatisch irgendwo durchklicken kann.
Weil sich das "Klick-Programm" ja im Hintergrund halten soll, komme ich da mit BB alleine nicht weiter. Ich hab' jetzt gehört dass man das mit WinAPI hinkriegen würde... Weil ich mich aber NUR mit BB auskenne (und sonst von Computern nicht sehr viel weiss :S) habe ich echt 0 Ahnung wie ich weitermachen soll... Hier mal paar Dinge die ich dazu wissen muss:

-Was ist die WinAPI überhaupt? Muss ich die downloaden oder ist die schon irgendwo auf meinem PC? :S
-Wie baue ich die WinAPI in mein BB ein?

Sorry wegen der Noobheit und danke für Antworten Smile

mfg

Der Eisvogel

BeitragMi, Jul 21, 2010 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Such mal nach "Tastendruck simulieren" in der Forensuceh, da solltest du was in der Userlibs-Kategorie finden.

EDIT: Ups sorry, hatte die Fragestellung ncith gelesen. Embarassed

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.
  • Zuletzt bearbeitet von Der Eisvogel am Mi, Jul 21, 2010 21:58, insgesamt einmal bearbeitet

hazumu-kun

BeitragMi, Jul 21, 2010 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Die WinAPI (Windows Advanced programming interface) ist eine Sammlung von DLL's die Systemrelevante Funktionen für Programme bereitstellen, um sie in BB nutzen zu können brauchst du die WinAPI-Decls für BB (Forensuche!) evtl das Include mit den Konstanten, und einen link:
Link

Der Rest ist selber lernen und probieren + forensuche und google, hat es alles schon gegeben.

EDIT: Runterladen brauchst du nichts, alle DLL's sind onboard und werden auch vom System selber genutzt

Xaymar

ehemals "Cgamer"

BeitragMi, Jul 21, 2010 23:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Decls: https://www.blitzforum.de/foru...php?t=7330
Eine davon hat nen schreibfehler drin...
Warbseite

Silver_Knee

BeitragDo, Jul 22, 2010 4:21
Antworten mit Zitat
Benutzer-Profile anzeigen
also das mit dem tastendruck simulieren funzt. such den thread mal. die dll simuliert auch nen mausdruck wenn dein fenster nicht aktiv ist.

hazumu-kun

BeitragDo, Jul 22, 2010 10:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei manchen Funktionen in den Decls musst du den Datentyp eines Parameters ändern damit es funktioniert.
Typischerweise ist das von integer(%) nach pointer(*).

Damit BB intern z.b. ein Bank-Handle tatsächlich als Zeiger auf ein Stück speicher weiterreicht, und nicht einfach die Zahl des BB-Handles für die Bank.

Merk dir das und probier es aus wenn eine WinAPI Funktion aus unerklärlichen Gründen nicht funktioniert.
Hauptsächlich sind das die Parameter die in den Decls ein "lp" vorne im Namen haben, die müssten dann ein * als Datentypkennung haben.
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent

Ananas

BeitragDo, Jul 22, 2010 12:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die zahlreichen Antworten und Tips Wink Ich werde demnächst versuchen mich in das Ganze einzuarbeiten. Dann kommen bestimmt wieder neue Fragen auf Wink

mfg

Ananas

BeitragDi, Jul 27, 2010 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey, ich bins nochmal.. Habe endlich Zeit gefunden mich mit der ganzen Geschichte zu beschäftigen aber bin leider gescheitert weil ich noch nicht richtig begriffen habe wie ich die ganzen coolen Dinge in meinem BB-Programm verfügbar machen kann... Ich hab das so verstanden und ausgeführt:

-Ich habe den ganzen Code aus Xaymar's Link ins BB kopiert
-dann als WinAPI.bb abgespeichert
-und versucht mit Include in meinem eigentlichen Programm einzubauen

Naja ich weiss jetzt dass das falsch ist aber wie sonst baue ich das denn ein? :S (War ja eigentlich auch schon von Anfang an meine Frage... Wird wohl als selbstverständlich betrachtet dass man das kann Embarassed )

mpmxyz

BeitragDi, Jul 27, 2010 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst den Code im Userlibs-Ordner von BlitzBasic als eine *.decls-Datei speichern.
Bei jedem erstellten Programm wird es dann automatisch eingebunden.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Ananas

BeitragDi, Jul 27, 2010 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso, danke Very Happy
Ich habe nur gerade noch das Problem, dass ich es nicht hinkriege aus der Datei eine .decls-Datei zu machen Embarassed
Wenn ein einfach beim Namen ".decls" anhänge bleibt es eine BB-Datei Question

mpmxyz

BeitragDi, Jul 27, 2010 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
notepad.exe ist dazu geeigneter. ^^
(An "Alle Dateien" denken!)
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Ananas

BeitragDi, Jul 27, 2010 15:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso gut das wäre geschafft^^
Nur kann ich jetzt nichtmal mehr mein BB starten -.- Es kommt eine Meldung:

"compiler environment error: Error in userlib "WinAPI.decls" - expecting ')' after function decl"

dumm gelaufen -.- ich vermute mal das ist der oben genannte "Schreibfehler"... Nur wie finde ich den? Wer hat ihn schon gefunden und verrät mir wo er ist?^^

Ananas

BeitragDo, Jul 29, 2010 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja ich habe nochmal gründlich nach dem Fehler gesucht, ihn aber nicht gefunden. Herausgefunden habe ich nur, in welchem 12tel des Gesamten er sich befindet - und diesen Teil habe ich jetzt einfach mal aus dem Userlibs-Ordner rauskopiert. Immerhin geht mein BB jetzt wieder.

Nur wäre jetzt eine Dokumentation zu all den Funktionen nicht schlecht :S Wie finde ich denn z.B. die richtige aus 100en Funktionen wenn ich nur weiss was sie tun soll? Bzw ich weiss nicht mal ob so eine Funktion überhaupt enthalten ist Surprised
Über Google habe ich nicht immer sinnvolle Antworten gekriegt und auf der Seite die hier angegeben wurde (http://msdn.microsoft.com/de-ch/default.aspx) finde ich überhaupt nix was mit WinAPI zu tun hat :S

Übrigens sorry für den Doppelpost, aber ich hoffe jemand kann helfen...
mfg

Eingeproggt

BeitragDo, Jul 29, 2010 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah, in Deutsch gibts das auch? Smile
Aber hab mal schnell reingeschaut... Also du musst oben auf "Library" gehen und dann kann ich dir nur vel Spass im Paradies wünschen Smile

Wobei ich mit der deutschen Ausgabe nicht so wirklich zufrieden bin nach einem schnellen Test...
Also ich starte am liebsten hier: http://msdn.microsoft.com/en-u...39672.aspx
Dort hast du schonmal alles und kannst dich durchklicken - was aber wohl länger als nen Nachmittag dauern wird ^^
Und auch sehr wichtig für mich: Da kann man einen Funktionsnamen eingeben so wie er in der decls steht und man bekommt fast immer als ersten Treffer die WinAPI-Funktionsbeschreibung. (Was im Deutschen nicht so ist, weshlab ich damit irgendwie nichts anzufangen weiß Confused )

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Ananas

BeitragFr, Jul 30, 2010 2:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieht aus als wäre ich total bescheuert weil ich unter "Library" nirgends eine Liste der Funktionen finde (ich stell mir die so ähnlich wie hier bei der BBP-Hilfe vor)... :S

Falls jemand vielleicht den direkten Link zu so ner Liste hätte wäre ich sehr dankbar dafür... Ansonsten habe ich eigentlich vorerst keine Lust zum tagelangen Suchen... Deshalb würde es eigentlich auch genügen wenn jemand der schon etwas Erfahrung damit hat mir vielleicht die richtigen Funktionsnamen sagen könnte um...

-Einen beliebigen Tasten- oder Mausdruck zu simulieren
-Etwas auszuführen obwohl das Fenster des Programms minimiert wurde (z.B. auf Tastendrücke warten, die Maus an eine andere Koordinate versetzen, etc.)
-und (falls das möglich ist) ein Fenster erstellen das richtig nach "Windows" aussieht... Mit dieser Leiste (Datei, Bearbeiten, usw).

mfg

Eingeproggt

BeitragFr, Jul 30, 2010 11:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Also gut, ich weiß dass durchaus tagelanger Aufwand dahinter stecken kann und solang es nicht darum geht, dass du dich da wirklich reinsteigerst sondern nur diese 3 Sachen erledigen willst dann empfehle ich:

1) Forensuche
2) GetAsyncKeyState oder erst recht Forensuche
3) Sorry, da muss ich passen. Ich hab mich erst gestern umgeschaut wie man so "ToolTips" machen kann - voll in Windows-Manier mit Schatten drunter und so. Fand dazu leider nur eine Klasse die Windows in der .NET-Programmierung anbietet und die man mit C++, C#, VB und vlt noch was nutzen kann. In BB hab ichs gar nicht erst versucht Sad Und ich denke dass dein Vorhaben so ähnlich umzusetzen wäre...
Kann aber auch sein dass ich mich irre, wär nicht das erste Mal Confused
EDIT: Kann das was sein? Windows Menus

mfG, Christoph.

PS: Ich hab mal so ne Funktionsliste gesucht:
Hier zum Beispiel eine für System Information Functions.
Ist halt irrsinnig umfangreich die WinAPI und alles unter dem Überbegriff "Library" strukturiert und bis man dann mal wirklich dort landet wo man hin will...
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Ananas

BeitragDi, Aug 03, 2010 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey, vielen Dank für die Antwort, ich hab nur ne Frage zu Nr. 2...

Ich hatte gefragt wie ich einen Befehl mit meinem Programm ausführen kann, obwohl dieses minimiert wurde... Nun da hilft mir GetAsyncKeyState wohl nicht gerade weiter :S
gibt es überhaupt eine Möglichkeit dazu, BB-Befehle (Bsp: MoveMouse) auszuführen wenn ein anderes Fenster im Vordergrund steht?

Falls mir jemand weiteres Suchen ersparen möchte und gerade den Befehl wüsste, um ein Fenster automatisch zu minimieren/in den Vordergrund stellen, wär das super Razz

Iguan

BeitragDi, Aug 03, 2010 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hatte etwas ähnliches auch schonmal versucht! Geht mit BB relativ umständlich... lade dir doch mal das Gratistool "Autohotkey" herunter. Mit dem kannst du unglaublich viel machen. Es handelt sich um eine sehr einfache und sehr "mächtige" Programmiersprache um die WinAPI Befehle zu benutzen. Auch die Hilfe-Datei ist sehr ausführlich beschrieben. Es gibt sogar einen Skript-Recorder, mit denen du deine Mausklicks aufnehmen kannst und dann Wiedergeben kannst.. die Skripts kannst du im Hintergrund laufen lassen (auch unsichtbar etc..) und auf Wunsch in eine Exe compilieren (in die Exe kannst du auch Bilder und andere Files reinkompilieren (mit "FileInstall")). Auch den Bildschirm nach Bildern absuchen (Pixelgenau und schnell) und ggf Mausklicks ausführen ist kein Problem. Wenn du dennoch BB verwenden willst, kannst du ja über eine Textdatei von BB mit deinem Skript kommunizieren, oder gleich den Befehl PostMessage im Skript benutzen. Ich steure mittlerweile Winamp mit BB an - mit allem drum und dran (Abspielzeit, Volume, Playlists, ID3-Infos, Visualisierung etc..). Geht alles kinderleicht!

Beispiele der Befehle:

Code: [AUSKLAPPEN]

MouseClick, Left, X,Y
;Simuliert ein Mouseklick


b::a  ; Wenn du die taste B drückst kommt der Buchstabe A



d::
send, {Enter}{Left}{Up}{Down}blablabla
return
;Simuliert beim Drücken der Taste D die angegebenen Tasten



ImageSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ImageFile
; OutputVarX = X koordinate des gefundenen Bildes
; OutputVarY = Y koordinate des gefundenen Bildes
;X1, Y1, X2, Y2 = Bereich des Bildschirmes der nach einem Bild abgesucht werden soll
;ImageFile = Pfad mit Dateinamen des Bildes dass gesucht werden soll





Die Skripts laufen immer im Hintergrund (Tray)- wenn du es in Tray-Leiste
unsichtbar machen willst, schreib an anfang des Skriptes #NoTrayIcon

... google mal... wirst ne menge finden...


MfG

Iguan

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group