LNK Auflösung mit ShellLinkResolve() [erledigt]

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

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11515
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

LNK Auflösung mit ShellLinkResolve() [erledigt]

Beitrag von AUGE_OHR » So, 09. Sep 2018 6:26

hi,

ich habe in der Befehls-Zeile auch Parameter was bei einem normalen Aufruf des Link funktioniert.
wenn ich nun das Resultat von ShellLinkResolve() ansehe fehlen mir die Parameter !

und was nun ... :angry5:

---

so ich habe das ganze jetzt native gelöst und ein kleine Problem

Code: Alles auswählen

   cTarget := oShellLink:Path
   cPara   := oShellLink:Arguments
wie ich raus gefunden habe gibt ShellLinkResolve() wohl nur cTarget zurück :angry4:
der Versuch das ganze in "" zu setzten endete mit dieser Fehlermeldung.
ShellLinkResolve.jpg
ShellLinkResolve.jpg (204 KiB) 293 mal betrachtet
"irgendwie" wird es von Windows unterteilt und die Parameter landen unter o:Arguments :roll:

ich könnte jetzt den String, wenn Parameter, so zusammenbauen ...

Code: Alles auswählen

   RETURN cTarget + IF(EMPTY(cPara),""," "+cPara)
ABER ...
Runshell() oder ShellExecuteA() brauchen die Parameter und akzeptieren den "ganzen" String nicht.
ich müsste den String dann wieder untersuchen ob es Parameter gibt und die raus holen ... #-o

alternative wäre ein Array ... sinnvoll denn es gäbe ja noch anderen Informationen z.b. Hotkey ShortCut.
das wäre dann aber nicht mehr kompatible zu Xbase++ ShellLinkResolve() ... :^o

---

wenn ich nun CHR(0) verwende :idea:

Code: Alles auswählen

   RETURN cTarget + IF(EMPTY(cPara),"",CHR(0)+cPara)
schreibe dann kommt ja der ganze String zurück. oder :?:

Code: Alles auswählen

   cFull := DXE_ShellLinkResolve( cPath + cName )
   nPosi := AT(CHR(0),cFull)
   IF nPosi > 0
      msgbox(cFull,"mit CHR(0)")
      cPara := SUBSTR(cFull,nPosi+1)
      cFull := SUBSTR(cFull,1,nPosi-1)
      SHELLOPENFILE(cFull,,cPara)
   ELSE
      SHELLOPENFILE(cFull)
   ENDIF
in der Msgbox() sehe ich die Parameter nicht, aber mit AT() findet man es und kann sich die Parameter raus holen =D>

was sagt ihr zu dieser Lösung für die DXE Lib :?:
gruss by OHR
Jimmy

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11515
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: LNK Auflösung mit ShellLinkResolve() [erledigt]

Beitrag von AUGE_OHR » So, 09. Sep 2018 12:24

gruss by OHR
Jimmy

Antworten