Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 14.12.2005, 20:46 Titel: Parameter eines laufenden Programmes herausfinden |
|
|
Gibt es dafür eine Funktion mittels API?
Ich habe zwar absolut keine Ahnung in diesem Bereich, werde mir aber Mühe geben, das zu verstehen.
Vielen Dank im Vorraus,
jb |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 14.12.2005, 21:08 Titel: |
|
|
Hi jb,
unter 'Parameter eines laufenden Programms' verstehe ich, was einem Programm beim Aufruf 'mitgegeben' wurde. Dafür ist Command$(..) da:
Command$(0) = Name des laufenden Programms(inkl. Pfad)
Commad$(1..) = übergebene Parameter
Oder was meinst du?
Grüße
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 14.12.2005, 21:14 Titel: |
|
|
Das ist schon klar, ich meine halt, wie man z.B. den Parameter vom laufenden NOTEPAD.EXE
herausfinden kann, d.h. herausfinden kann, welche Textdatei im Moment geöffnet ist.
Ich hoffe, ich konnte mein Problem verständlich machen
jb |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 14.12.2005, 21:25 Titel: |
|
|
Mal sehen, du willst also(z.B. über findWindow(..)) den Handle eines Programms ermitteln und suchst eine (API-)Funktion, die dir dann meldet, welche Parameter an dieses Programm übermittelt wurden?
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 14.12.2005, 21:59 Titel: |
|
|
Ob das mit findWindow() gehtm, weiß ich nicht, denn ich habe da garkeine Ahnung von, aber im Prinzip hast du Recht.
Ich möchte also erst herausfinden (am besten in einer Schleife) ob das entsprechende Programm läuft (in diesem
Falle NOTEPAD.EXE). Wenn dem so ist, mit irgendeiner Funktion herausfinden, mit welchem Parameter
es augerufen wurde ( = welche Dateien mit dem Editor geöffnet wurden).
So soll es aussehen...
jb |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 14.12.2005, 22:22 Titel: |
|
|
Das ist mein Versuch herauszufinden, ob die Befehlsreferenz schon geladen ist, vllt. hilft dir das ja erst mal weiter Code: | '$include: "windows.bi"
'$include: "win\winuser.bi"
Option Escape
Option Explicit
Dim As Integer hwnd
Dim Cmd$
Cmd$=Environ$("windir") &"\\hh.exe"
Const Par$="D:\\Sprachen\\freeBASIC\\freeBASIC-Befehlsreferenz.chm" 'Das ist der ProgrammName
hwnd=Cast(Integer, FindWindow(null, "Hilfe")) 'Das ist der FensterName
If Not hwnd Then
If Exec(Cmd$, Par$) Then
MessageBox(null, Cmd$ &" oder\n" &Par$ &"\nnicht gefunden..", "Ooops, Fehler!", MB_OK)
End If
End If
End 'always ultra.. | Mußte mal kucken, ob es für dich von Nutzen ist
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO..
Zuletzt bearbeitet von ytwinky am 16.12.2005, 18:48, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 14.12.2005, 22:29 Titel: |
|
|
Der findet erstmal die .BIs nicht...
Hab das Programm Verzeichnis der FBIDE.EXE gespeichert.
Welche Dateien muss ich von wo dahinkopieren?
jb |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 14.12.2005, 22:37 Titel: |
|
|
Möglicherweise hast du eine ältere Version von freeBASIC; bis v0.14 hießen die Windows-API-BIs noch anders.
Lad dir mal die v0.15b runter, die, die's zurzeit gibt ist mehr oder weniger stable. _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 14.12.2005, 22:40 Titel: |
|
|
Die .bi-Dateien befinden sich (normalerweise) in:
{fb-installationsverzeichnis}\inc
Das gilt auf alle Fälle für FB0.15b(v.01.12.2005)
Dabei spielt es keine Rolle, wo das {fb-installationsverzeichnis} ist..
..ich habe das nämlich wieder auf D:\Sprachen\freeBASIC installiert und es
läuft problemlos(naja, fpp spielt halt oft nicht mit, aber dann lasse ich ihn einfach bockig in der Ecke stehen..)
[Edit]
Ich habe das Programm gerade nochmal übersetzt, das geht wunderbar, also muß bei deiner Installation was nicht in Ordnung sein
Ich habe FB übrigens auch im %Path% stehen und auch FBCWin auf das Verzeichnis gesetzt(habe ich aber nur gemacht, weil ich dachte, daß fpp dann mit mir spielt, aber fpp.. s.o.)
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO..
Zuletzt bearbeitet von ytwinky am 14.12.2005, 22:53, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 14.12.2005, 22:49 Titel: |
|
|
Also mit der Version von www.freebasic.de unter Compiler klappt's auch nicht - die windws.bi existiert nicht, auch die winuser.bi, weder im Hauptverzeichnis, noch im Unterverzeichnis /inc/. Woran liegt's denn bloß?
jb |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 14.12.2005, 22:56 Titel: |
|
|
Habe das schonmal für nen anderen auf meinem Space hochgeladen. Bei mir war es übrigens dabei. Hier aber nochmal der komplette inc ordner.
Michael |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 15.12.2005, 20:52 Titel: |
|
|
Habe mir jetzt die neueste Version (Link oben) runtergeladen, und FB kompiliert ohne Fehlermeldung.
Aber jetzt spielt FPP nicht mit und stürzt ab.
jb |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 15.12.2005, 21:11 Titel: |
|
|
Hi jb,
..willkommen im Club
Du kannst dir ja von VonGodric 'ne Debug-Version downloaden,
[Edit]
Ooops, Fpp ist nicht von VonGodric(sorry @VonGodric), sondern: ReadMe auf http://ecowles.dyndns.org/fpp/ hat Folgendes geschrieben: | FPP - FreeBASIC Pre-Parser v1.11.0075
Eric Cowles <cowles1e@uregina.ca>
Copyleft Saturday, March 12th, 2005 |
aber der Link stimmt..
[Edit]
http://ecowles.dyndns.org/fpp/
aber die hat (jedenfalls bei mir) die gleiche Macke..
Ich bin auch wieder brav|reumütig zu fbc zurückgekehrt
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 16.12.2005, 17:46 Titel: |
|
|
Mit FBC klappt's auch so...
Das Programm funktioniert aber nicht so, wie ich will...
In deinem Programm dürfte ja
Code: |
if exec(Cmd$, Par$) then
|
die entscheidende Zeile sein - sie startet das Programm ja mit dem entsprechenden
Kommandozeilenparameter. Meine Frage ist aber, ob ich herausfinden kann - und zwar nur durch
Angabe des Programmnamen - mit welchem Parameter es aufgerufen wurde...
jb |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 16.12.2005, 19:02 Titel: |
|
|
Ich habe das Beispiel(!!)-Programm lediglich gepostet, weil..
jb hat Folgendes geschrieben: | Ob das mit findWindow() gehtm, weiß ich nicht, denn ich habe da garkeine Ahnung von, aber im Prinzip hast du Recht. | ..und mit dem Programm kannst du herausfinden, ob dieses|(Was auch immer) gerade läuft, richtig? Ohne Handle kannst du ja garnichts machen..
Jetzt geht es nur darum, herauszufinden, wo das Programm mit dem Handle yxzt seine Aufrufparameter versteckt hat UND ob diese zugänglich sind.
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 16.12.2005, 20:48 Titel: |
|
|
Ich habe jetzt hier was gefunden: http://www.fbarchiv.de/index.php?page=showcode&id=11
Aber das Problem mit dem Herausfinden des Parameters bleibt...
/edit: Hab die Lösung gefunden, habe einfach nen VB-Code aus dem Netz genommen,
und den nach FB "portiert" - falls man es überhaupt so nennen kann
/edit 2: Sollte natürlich FB heißen
jb
Zuletzt bearbeitet von jb am 17.12.2005, 00:18, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 17.12.2005, 00:10 Titel: |
|
|
Hmmm, glaubst du wirklich, daß du über den Prozeß an die Aufrufparameter kommst
Der Aufruf ist doch längst Geschichte, wenn das Programm eine Prozess-ID hat, oder nicht?
Apropos Geschichte:Oder denkst du, daß es irgendwo eine 'History-Liste' mit getätigten Programmaufrufen(und deren Parametern) gibt???
ytwinky
[Edit]
Na gut, zu langsam, aaaber jb hat Folgendes geschrieben: | und den nach FP "portiert" - falls man es überhaupt so nennen kann |
Den Code möchte ich sehen, den du von VB nach FREE-Pascal(FP) portiert hast
[Edit2]
Ach soooo  _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO..
Zuletzt bearbeitet von ytwinky am 17.12.2005, 00:22, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 17.12.2005, 00:14 Titel: |
|
|
Ich gebe mich mittlerweile mit dem Windowsfensterstitel zufrieden...
jb |
|
Nach oben |
|
 |
|