Browser aus XBase mit Link-Übergabe aufrufen

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

Moderator: Moderatoren

Antworten
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Browser aus XBase mit Link-Übergabe aufrufen

Beitrag von andreas »

Hallo Leute,

ich muss aus meinem Programm den Standartinternetbrowser aufrufen und einen Link an den übergeben, damit die Seite geöffnet wird.
Der Link ist sehr lang und enthält &-Zeichen. Wenn ich mir den Link mit Msgbox ausgebe, passt der. Sobald ich versuche den Aufruf mit folgendem Befehl zu starten, bekomme ich nur ein Teil des Links bis zum 1. &-Zeichen im Browser angezeigt.

Code: Alles auswählen

cLink := "http://www.mapquest.com/maps/map.adp?searchtype=address")
cLink += "&formtype=address&latlongtype=degrees&zoom=8"
RunShell( "/C start /B "+alltrim(cLink),,,.t. )
Kennt jemand vielleicht das Problem oder eine andere Lösung dafür?
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Andreas.

Ja, der Makrooperator. :D Einfach das "&" im Text durch "+Chr( 38 )+" ersetzen.
Herzlich,
Tom
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

Hallo Tom,

darüber habe ich auch schon gedacht. Das hilft aber nicht. Ich muss es wahrscheinlich irgendwie anders aufrufen.
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo,

mit dem Macrooperator hat das nichts zu tun, da ja nicht Xbase++ den String als Comando interpretiert. Ich gehe mal davon aus, dass die überflüssige Klammer oben links ein versehen ist ... :wink:

Falls du mit dem Startbefehl den Explorer richtig gestartet bekommst, solltest du mal den Befehl nicht mit " aufbauen, sondern mit ' und " innen setzen, damit die Befehlszeile in Klammern kommt.

cLink := '"...."' also erst ' dann " der Explorer wird dann mit "http://.. gestartet und geht hoffentlich :?
Gruß
Hubert
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

Hallo Hubert,
Falls du mit dem Startbefehl den Explorer richtig gestartet bekommst, solltest du mal den Befehl nicht mit " aufbauen, sondern mit ' und " innen setzen, damit die Befehlszeile in Klammern kommt.
Das war schon nicht verkehrt. Ich vermute, dass der Link volständig ankommt.
Warum "vermute"? Weil dann mit RunSchell nicht erkannt wird, was für eine Anwendung gestartet werden soll.
Kennt jemand einen API-Aufruf, wo Windows automatisch erkennen würde, was für Anwendung gestertet werden muss.
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Beitrag von Markus Walter »

Hallo Andreas,

versuche es mal mit

DLLFUNCTION ShellExecuteA(nHWND, cOperation, cFile, cParms, cDirectory, nOpenMode) USING STDCALL FROM SHELL32.DLL
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Beitrag von Wolfgang Ciriack »

Hallo Andreas,
ich benutze den folgenden Code:

Code: Alles auswählen

#define SW_HIDE             0
#define SW_SHOWNORMAL       1
#define SW_NORMAL           1
#define SW_SHOWMINIMIZED    2
#define SW_SHOWMAXIMIZED    3
#define SW_MAXIMIZE         3
#define SW_SHOWNOACTIVATE   4
#define SW_SHOW             5
#define SW_MINIMIZE         6
#define SW_SHOWMINNOACTIVE  7
#define SW_SHOWNA           8
#define SW_RESTORE          9
#define SW_SHOWDEFAULT      10
#define SW_MAX              10

PROCEDURE OpenURL( cURL )

cUrl:=alltrim(cUrl)
if !empty(cUrl)
   DllCall("SHELL32.DLL",DLL_STDCALL,"ShellExecuteA",AppDeskTop():getHWnd(),"Open",cURL,Nil,CurDir(),SW_RESTORE)
endif
RETURN
Viele Grüße
Wolfgang
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

Hallo Wolfgang,

danke. Genau das habe ich gesucht. Funktioniert einwandfrei.
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
adrian
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 08. Mai 2006 8:58
Wohnort: Aadorf TG
Danksagung erhalten: 1 Mal
Kontaktdaten:

Irgentwo klemmt es...

Beitrag von adrian »

Hallo Wolfgang

Ich wollte bei mir dies auch so einbauen wie Du dies beschrieben hast, Compilieren kein Problem.

Doch beim ausführen kommt die Fehlermeldung: unbekannte Variable DLL_STDCALL.

Entweder habe ich da noch was nicht richtig kapiert, oder mir fehlt da noch was, hast Du eventuell eine Idee ?

Besten Dank

adrian
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Irgentwo klemmt es...

Beitrag von AUGE_OHR »

hi,
adrian hat geschrieben: Ich wollte bei mir dies auch so einbauen wie Du dies beschrieben hast, Compilieren kein Problem.

Doch beim ausführen kommt die Fehlermeldung: unbekannte Variable DLL_STDCALL.

Entweder habe ich da noch was nicht richtig kapiert, oder mir fehlt da noch was, hast Du eventuell eine Idee ?
bin zwar nicht Wolfgang :

Code: Alles auswählen

#Include "DLL.CH"
gruss by OHr
Jimmy
Benutzeravatar
adrian
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 08. Mai 2006 8:58
Wohnort: Aadorf TG
Danksagung erhalten: 1 Mal
Kontaktdaten:

Super...

Beitrag von adrian »

Hallo Ohr

Nehme jede Idee entgegen, vorallem wenn Sie zur Lösung beiträgt. :razz:

Hat geklappt und funktioniert prima.

adrian
Antworten