Hallo zusammen,
Ich stehe vor folgendem Problem: Ich würde gerne die Information einer Verknüpfung auslesen z.B. Ausführen In, Tastenkombination, Ausführen etc.
Hat das schoneinmal jemand gemacht?
Zusätzlich habe ich noch die Frage wie/ob ich in meiner Applikation abfragen kann durch welche Verknüpfung sie gestartet wurde.
Freundliche Grüsse
Informationen einer Verknüpfung auslesen
Moderator: Moderatoren
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Informationen einer Verknüpfung auslesen
Hotkeys auslesen ... da hab ich doch mal ein Script gesehen in einer Zeitschrift ...rschi hat geschrieben:Ich stehe vor folgendem Problem: Ich würde gerne die Information einer Verknüpfung auslesen z.B. Ausführen In, Tastenkombination, Ausführen etc.
es wird wohl auch mit WMI gehen ... aber welche Function ?
probiere doch mal das hier aus (erfordert DIENST WMI)
Code: Alles auswählen
#include "common.ch"
#include "os.ch"
#define CRLF CHR(13)+CHR(10)
#PRAGMA LIBRARY("ASCOM10.LIB")
STATIC lVISTA := .F.
PROCEDURE Main(strComputer,cUser,cPassword)
LOCAL objWMIService
LOCAL colItems
LOCAL cText
LOCAL cName
LOCAL bCollBlock
LOCAL i,iMax
LOCAL j,jMax
LOCAL aitem := {}
LOCAL aProp := {;
"ActionID",;
"Arguments",;
"Caption",;
"Description",;
"Direction",;
"HotKey",;
"IconIndex",;
"Name",;
"Shortcut",;
"ShowCmd",;
"SoftwareElementID",;
"SoftwareElementState",;
"Target",;
"TargetOperatingSystem",;
"Version" }
DEFAULT strComputer TO "Localhost"
DEFAULT cUser TO "Administrator"
DEFAULT cPassword TO ""
CLS
SET ALTER TO Win32_ShortcutAction.TXT
SET ALTER ON
IF "VISTA" $ OS(OS_PRODUCT) .OR. "WIN2003" $ OS(OS_PRODUCT) .OR. "WIN2008" $ OS(OS_PRODUCT)
lVISTA := .T.
ENDIF
IF lVISTA
IF strComputer == "Localhost"
objWMIService := CreateObject( "WbemScripting.SWbemLocator" ):ConnectServer(strComputer, "Root\CIMv2")
ELSE
IF EMPTY(cPassword)
MSGBOX("Need Password")
QUIT
ELSE
objWMIService := CreateObject( "WbemScripting.SWbemLocator" ):ConnectServer(strComputer, "Root\CIMv2",strComputer+"\"+cUser,cPassword)
ENDIF
ENDIF
ELSE
objWMIService := GetObject("WinMgmts:{impersonationLevel=impersonate}\\"+strComputer+"\Root\CIMv2")
ENDIF
colItems := objWMIService:ExecQuery("select * from Win32_ShortcutAction",,48)
bCollBlock := {|oService,n| AADD(aItem,{ n,;
oService:getProperty("ActionID"),;
oService:getProperty("Arguments"),;
oService:getProperty("Caption"),;
oService:getProperty("Description"),;
oService:getProperty("Direction"),;
oService:getProperty("HotKey"),;
oService:getProperty("IconIndex"),;
oService:getProperty("Name"),;
oService:getProperty("Shortcut"),;
oService:getProperty("ShowCmd"),;
oService:getProperty("SoftwareElementID"),;
oService:getProperty("SoftwareElementState"),;
oService:getProperty("Target"),;
oService:getProperty("TargetOperatingSystem"),;
oService:getProperty("Version") })}
ComEvalCollection(colItems, bCollBlock )
IF LEN(aItem) > 0
? jMax := LEN(aItem)
? iMax := LEN(aItem[1])
?"*****************************************************************************"
FOR j := 1 TO jMax
FOR i := 1 TO iMax-1
? SUBSTR(aProp[i]+SPACE(40),1,40)+":",aItem[j,i+1]
NEXT
?"*****************************************************************************"
NEXT
ELSE
MSGBOX("no Property found ?")
ENDIF
SET ALTER OFF
SET ALTER TO
Runshell("Win32_ShortcutAction.TXT","Notepad.exe",.T.)
RETURN
Code: Alles auswählen
#include "common.ch"
#include "os.ch"
#define CRLF CHR(13)+CHR(10)
#PRAGMA LIBRARY("ASCOM10.LIB")
STATIC lVISTA := .F.
PROCEDURE Main(strComputer,cUser,cPassword)
LOCAL objWMIService
LOCAL colItems
LOCAL cText
LOCAL cName
LOCAL bCollBlock
LOCAL i,iMax
LOCAL j,jMax
LOCAL aitem := {}
LOCAL aProp := {;
"Action" }
DEFAULT strComputer TO "Localhost"
DEFAULT cUser TO "Administrator"
DEFAULT cPassword TO ""
CLS
SET ALTER TO Win32_ShortcutSAP.TXT
SET ALTER ON
IF "VISTA" $ OS(OS_PRODUCT) .OR. "WIN2003" $ OS(OS_PRODUCT) .OR. "WIN2008" $ OS(OS_PRODUCT)
lVISTA := .T.
ENDIF
IF lVISTA
IF strComputer == "Localhost"
objWMIService := CreateObject( "WbemScripting.SWbemLocator" ):ConnectServer(strComputer, "Root\CIMv2")
ELSE
IF EMPTY(cPassword)
MSGBOX("Need Password")
QUIT
ELSE
objWMIService := CreateObject( "WbemScripting.SWbemLocator" ):ConnectServer(strComputer, "Root\CIMv2",strComputer+"\"+cUser,cPassword)
ENDIF
ENDIF
ELSE
objWMIService := GetObject("WinMgmts:{impersonationLevel=impersonate}\\"+strComputer+"\Root\CIMv2")
ENDIF
colItems := objWMIService:ExecQuery("select * from Win32_ShortcutSAP",,48)
bCollBlock := {|oService,n| AADD(aItem,{ n,;
oService:getProperty("Action") })}
ComEvalCollection(colItems, bCollBlock )
IF LEN(aItem) > 0
? jMax := LEN(aItem)
? iMax := LEN(aItem[1])
?"*****************************************************************************"
FOR j := 1 TO jMax
FOR i := 1 TO iMax-1
? SUBSTR(aProp[i]+SPACE(40),1,40)+":",aItem[j,i+1]
NEXT
?"*****************************************************************************"
NEXT
ELSE
MSGBOX("no Property found ?")
ENDIF
SET ALTER OFF
SET ALTER TO
Runshell("Win32_ShortcutSAP.TXT","Notepad.exe",.T.)
RETURN
gruss by OHR
Jimmy
Jimmy
Re: Informationen einer Verknüpfung auslesen
Vielleicht habe ich mich falsch ausgedrückt.
Ich habe eine Verknüpfung, welche meine Applikation aufruft. Diese Verknüpfung kann überall liegen. Nun würde ich gerne wissen ob es
a) überhaupt möglich ist in der Applikation nachzusehen/herauszufinden von welcher Verknüpfung die Applikation aufgerufen wurde und
b) falls a) möglich ist wie ich die Parameter jener Verknüpfung auslesen kann
Freundliche Grüsse
Ich habe eine Verknüpfung, welche meine Applikation aufruft. Diese Verknüpfung kann überall liegen. Nun würde ich gerne wissen ob es
a) überhaupt möglich ist in der Applikation nachzusehen/herauszufinden von welcher Verknüpfung die Applikation aufgerufen wurde und
b) falls a) möglich ist wie ich die Parameter jener Verknüpfung auslesen kann
Freundliche Grüsse
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2470
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Informationen einer Verknüpfung auslesen
das kommt darauf an was Du auslesen möchtest
Programmpfad und Ausführen in kannst Du ja beim Start der Anwendung feststellen.
Programmpfad und Ausführen in kannst Du ja beim Start der Anwendung feststellen.
Gruß
Klaus
Klaus