Dll Call ?
Moderator: Moderatoren
- Wolfgang_B
- Rekursionen-Architekt
- Beiträge: 486
- Registriert: Do, 14. Jun 2007 18:22
- Wohnort: 94065 Waldkirchen
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 5 Mal
Dll Call ?
Hallo,
habe in irgendeinem Beitrag den folgenden Aufruf gefunden :
DllCall("SHELL32.DLL",DLL_STDCALL,"ShellExecuteA",AppDeskTop():getHWnd(),"Open",cURL,Nil,CurDir(),SW_RESTORE)
Hiermit wird der Windows Internet Explorer aufgerufen. Warum??? Wo ist der Hinweis auf das aufzurufende Programm? Außerdem funktioniert das nur bei meinem Rechner mit WIN2000. Bei WIN XP passiert erst mal nix, dann stürzt Windows ab.
Außerdem habe ich in anderen Beiträgen was von url.dll und anderen DLL's gelesen, die ich aber nirgends finde.
Die Fragen klingen vielleicht etwas naiv, bin mit xbase++ aber noch nicht so fit ..
Bin für jeden Tipp dankbar.
Gruß Wolfgang
habe in irgendeinem Beitrag den folgenden Aufruf gefunden :
DllCall("SHELL32.DLL",DLL_STDCALL,"ShellExecuteA",AppDeskTop():getHWnd(),"Open",cURL,Nil,CurDir(),SW_RESTORE)
Hiermit wird der Windows Internet Explorer aufgerufen. Warum??? Wo ist der Hinweis auf das aufzurufende Programm? Außerdem funktioniert das nur bei meinem Rechner mit WIN2000. Bei WIN XP passiert erst mal nix, dann stürzt Windows ab.
Außerdem habe ich in anderen Beiträgen was von url.dll und anderen DLL's gelesen, die ich aber nirgends finde.
Die Fragen klingen vielleicht etwas naiv, bin mit xbase++ aber noch nicht so fit ..
Bin für jeden Tipp dankbar.
Gruß Wolfgang
-
- Rekursionen-Architekt
- Beiträge: 151
- Registriert: Do, 15. Nov 2007 11:40
- Wohnort: Krefeld
- Kontaktdaten:
Hallo,
über diesen ApiCall führst du ein Kommando über die Windows Console aus.
Der 2. Parameter ist der Modus in dem der Befehl ausgeführt wird. Bei dir "open". Zusätzlich dazu gibt es noch die Parameter "print" und "explore". Zusätzlich müsstest du nur noch die Webseite angeben und wie sich das Fenster verhalten soll. (Normal, Minimiert usw...)
Den Aufruf des zuständigen Programms übernimmt Windows automatisch!
Ich rufe bei mir im Programm den Standart Browser über folgenden Aufruf auf, was unter Windows 2000 und XP Problemlos funktioniert:
ShellExecuteA( AppDesktop():getHWnd(), SHELL_OPEN, "www.meineWebseite.de" , , , SW_NORMAL)
Gruß,
Jannik
über diesen ApiCall führst du ein Kommando über die Windows Console aus.
Der 2. Parameter ist der Modus in dem der Befehl ausgeführt wird. Bei dir "open". Zusätzlich dazu gibt es noch die Parameter "print" und "explore". Zusätzlich müsstest du nur noch die Webseite angeben und wie sich das Fenster verhalten soll. (Normal, Minimiert usw...)
Den Aufruf des zuständigen Programms übernimmt Windows automatisch!
Ich rufe bei mir im Programm den Standart Browser über folgenden Aufruf auf, was unter Windows 2000 und XP Problemlos funktioniert:
ShellExecuteA( AppDesktop():getHWnd(), SHELL_OPEN, "www.meineWebseite.de" , , , SW_NORMAL)
Gruß,
Jannik
Kassensysteme für den Einzelhande http://ab-software.de
Mitglied der XUG-Cologne http://www.xug-cologne.de
Mitglied der XUG-Cologne http://www.xug-cologne.de
- Wolfgang_B
- Rekursionen-Architekt
- Beiträge: 486
- Registriert: Do, 14. Jun 2007 18:22
- Wohnort: 94065 Waldkirchen
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 5 Mal
-
- Rekursionen-Architekt
- Beiträge: 151
- Registriert: Do, 15. Nov 2007 11:40
- Wohnort: Krefeld
- Kontaktdaten:
Für mein Statement musst du erst noch folgende Zeile in dein Programm einbinden , damit der Linker weiß was er mit deinem Aufruf machen muss.
DLLFUNCTION ShellExecuteA( nWinHandle, cMode, cExe, cFile, cDir, nShow) USING STDCALL FROM SHELL32.DLL
Eine ausführliche Beschreibung zu DLLFUNKTION ist auch in der Xbase Hilfe.
Im Prinzip unterscheidet sich aber die Deklaration über DLLFUNKTION nicht von deinem Weg über DllCall().
Gruß,
Jannik
DLLFUNCTION ShellExecuteA( nWinHandle, cMode, cExe, cFile, cDir, nShow) USING STDCALL FROM SHELL32.DLL
Eine ausführliche Beschreibung zu DLLFUNKTION ist auch in der Xbase Hilfe.
Im Prinzip unterscheidet sich aber die Deklaration über DLLFUNKTION nicht von deinem Weg über DllCall().
Gruß,
Jannik
Kassensysteme für den Einzelhande http://ab-software.de
Mitglied der XUG-Cologne http://www.xug-cologne.de
Mitglied der XUG-Cologne http://www.xug-cologne.de
- Wolfgang_B
- Rekursionen-Architekt
- Beiträge: 486
- Registriert: Do, 14. Jun 2007 18:22
- Wohnort: 94065 Waldkirchen
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 5 Mal
- Wolfgang_B
- Rekursionen-Architekt
- Beiträge: 486
- Registriert: Do, 14. Jun 2007 18:22
- Wohnort: 94065 Waldkirchen
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 5 Mal
Hallo Janik,
hat unter XP leider nicht funktioniert. Habe es auf zwei verschiedenen Rechnern versucht. Der Rückgabewert von DllCall oder ShellExecuteA (je nach dem wie man die Funkton schreibt) ist immer NIL!
Hab keinen Plan, an was das liegen könnte. Die Hilfe in Alaska sagt da nur:
"DllCall() gibt den Rückgabewert der ausgeführten DLL-Funktion zurück. Falls die DLL gemäß der Xbase++ Aufrufkonvention erzeugt wurde, kann der Rückgabewert einen beliebigen Xbase++ Datentyp haben. Bei allen anderen Aufrufkonventionen ist der Rückgabewert vom Datentyp "numerisch"."
Frag mich nur, was in diesem Zusammhang der Unterschied von meinem Bürorechner (W2000) und meinem Entwicklungsrechner (XP) ist
Vieleicht hat noch jemand anders die selben Probleme.
Gruß Wolfgang
hat unter XP leider nicht funktioniert. Habe es auf zwei verschiedenen Rechnern versucht. Der Rückgabewert von DllCall oder ShellExecuteA (je nach dem wie man die Funkton schreibt) ist immer NIL!
Hab keinen Plan, an was das liegen könnte. Die Hilfe in Alaska sagt da nur:
"DllCall() gibt den Rückgabewert der ausgeführten DLL-Funktion zurück. Falls die DLL gemäß der Xbase++ Aufrufkonvention erzeugt wurde, kann der Rückgabewert einen beliebigen Xbase++ Datentyp haben. Bei allen anderen Aufrufkonventionen ist der Rückgabewert vom Datentyp "numerisch"."
Frag mich nur, was in diesem Zusammhang der Unterschied von meinem Bürorechner (W2000) und meinem Entwicklungsrechner (XP) ist
Vieleicht hat noch jemand anders die selben Probleme.
Gruß Wolfgang
-
- Rekursionen-Architekt
- Beiträge: 151
- Registriert: Do, 15. Nov 2007 11:40
- Wohnort: Krefeld
- Kontaktdaten:
Hallo,
das hört sich ein bischen so an als ob der die Datei nicht finden kann, was bei der shell32.dll sehr seltsam wäre. Aber kopiere doch bitte die Datei trotzdem mal in dein Entwicklungsverzeichniss. Du müsstest Sie unter \Windows\System32 finden.
Gruß,
Jannik
das hört sich ein bischen so an als ob der die Datei nicht finden kann, was bei der shell32.dll sehr seltsam wäre. Aber kopiere doch bitte die Datei trotzdem mal in dein Entwicklungsverzeichniss. Du müsstest Sie unter \Windows\System32 finden.
Gruß,
Jannik
Kassensysteme für den Einzelhande http://ab-software.de
Mitglied der XUG-Cologne http://www.xug-cologne.de
Mitglied der XUG-Cologne http://www.xug-cologne.de
- Wolfgang_B
- Rekursionen-Architekt
- Beiträge: 486
- Registriert: Do, 14. Jun 2007 18:22
- Wohnort: 94065 Waldkirchen
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 5 Mal
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
hi,
oder so und wurden dann "upgedated" auf XP ?
gehe mal in die CMD Box und vergleiche die SET Angaben.
dito was für eine Version Xbase++ verwendest du und "woher" lädt
er "welche" DLL ( XppLoad >> myDLL.TXT )
gruss by OHR
Jimmy
so wie ich deine OS() sehe ... waren die XP Rechner vorher mit W98sewasi01 hat geschrieben: Frag mich nur, was in diesem Zusammhang der Unterschied von meinem Bürorechner (W2000) und meinem Entwicklungsrechner (XP) ist
oder so und wurden dann "upgedated" auf XP ?
gehe mal in die CMD Box und vergleiche die SET Angaben.
dito was für eine Version Xbase++ verwendest du und "woher" lädt
er "welche" DLL ( XppLoad >> myDLL.TXT )
gruss by OHR
Jimmy
- Wolfgang_B
- Rekursionen-Architekt
- Beiträge: 486
- Registriert: Do, 14. Jun 2007 18:22
- Wohnort: 94065 Waldkirchen
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 5 Mal
Hallo Jannik, hallo Jimmy
hab mir selber ein Ei gelegt. Funktioniert jetzt einwandfrei. Man sollte bevor man hier lospostet vielleicht wirklich mal seine Laufzeitumgebung anschauen ...
Der Fehler war, daß ich die Entwicklungsumgebung auf einen USB Stick kopiert habe und in der Firma alle Einträge der Registry auf diesen Stick verbogen habe. Zuhause auf meinem Entwicklungsrechner natürlich nicht. Als ich man dann vom USB Stick aus die Anwendung gestartet habe, wurden natürlich bestimmte Dateien nicht mehr gefunden.
Nochmals herzlichen Dank für die Hilfe!
Viele Grüße und schöne Weihnachten
Wolfgang
hab mir selber ein Ei gelegt. Funktioniert jetzt einwandfrei. Man sollte bevor man hier lospostet vielleicht wirklich mal seine Laufzeitumgebung anschauen ...
Der Fehler war, daß ich die Entwicklungsumgebung auf einen USB Stick kopiert habe und in der Firma alle Einträge der Registry auf diesen Stick verbogen habe. Zuhause auf meinem Entwicklungsrechner natürlich nicht. Als ich man dann vom USB Stick aus die Anwendung gestartet habe, wurden natürlich bestimmte Dateien nicht mehr gefunden.
Nochmals herzlichen Dank für die Hilfe!
Viele Grüße und schöne Weihnachten
Wolfgang