Seite 1 von 1
GetActiveObject und Administrator Modus
Verfasst: 19.09.2012 09:57
von Josh
Hallo Leute,
hat jemand von euch eine Erklärung für mich, warum GetActiveObject nicht mehr funktioniert, wenn ich
'Administrator Modus für Windows Vista anfordern' in den Compileroptionen aktiviert habe?
Code: Alles auswählen
EnableExplicit
Define ClsId.i
Define App .i
CoInitialize_(0)
;Prüfung Unicode
If #PB_Compiler_Unicode = 0
MessageRequester ("", "Unicode muss aktiviert sein")
End
EndIf
;KlassenId
If CLSIDFromProgID_(@"Excel.Application", @ClsId)
MessageRequester ("", "Excel nicht installiert")
End
EndIf
;Verbindung zur Application
If GetActiveObject_(@ClsId, 0, @App)
MessageRequester ("", "Excel muss geöffnet sein")
End
EndIf
Danke
Re: GetActiveObject und Administrator Modus
Verfasst: 19.09.2012 12:59
von NicTheQuick
Vielleicht weil der Administrator kein Excel-Objekt geöffnet hat, sondern nur der Normaluser?
Re: GetActiveObject und Administrator Modus
Verfasst: 19.09.2012 13:17
von Danilo
Win7 64bit, PB 4.61 x86, Office 2010 Enterprise,
egal ob "
Administrator Modus für Windows Vista anfordern" aktiviert oder nicht
Re: GetActiveObject und Administrator Modus
Verfasst: 19.09.2012 15:10
von Josh
NicTheQuick hat geschrieben:Vielleicht weil der Administrator kein Excel-Objekt geöffnet hat, sondern nur der Normaluser?
Hmm, sieht wirklich so aus, als ob dann die ROT vom Administrator verwendet wird. Wenn Excel auch mit Administratorrechten geöffnet wird, dann funktioniert es wieder korrekt. Ein wenig seltsam, ich dachte, dass das Programm dann normal im User läuft und nur Adminrechte bekommt.
Danilo hat geschrieben:Win7 64bit, PB 4.61 x86, Office 2010 Enterprise,
egal ob "Administrator Modus für Windows Vista anfordern" aktiviert oder nicht
Das ist ja interressant. Ich verwende Win7 64bit, getestet mit PB 4.60 64 und 86 und da läuft es ganz normal ab. Allerdings verwende ich noch immer eine uralte Officeversion aus 2002. Ich habe das ganze extra auf Excel geändert, da das wohl die meisten am PC haben. Verwendet wird das bei mir für ein CAD System, dort habe ich es auf einem Uraltsystem (auch ca. 10 Jahre) und einer topaktuellen Version ohne Probleme getestet.
@Danilo: kannst du bitte testen, ab wo der Fehler auftritt?
Re: GetActiveObject und Administrator Modus
Verfasst: 20.09.2012 07:00
von Danilo
Josh hat geschrieben:@Danilo: kannst du bitte testen, ab wo der Fehler auftritt?
ClsId muß vom Typ CLSID sein, nicht Integer. CLSIDFromProgID_(@"Excel.Application", @ClsId) schreibt Sizeof(CLSID) Bytes an die
übergebene Speicherstelle, und da es bei Dir nur ein Integer war, schreibt es darüber hinaus über andere Variablen/Daten.
So läuft es dann auch ohne Crash:
Code: Alles auswählen
EnableExplicit
Define ClsId.CLSID
Define App .i
CoInitialize_(0)
;Prüfung Unicode
If #PB_Compiler_Unicode = 0
MessageRequester ("", "Unicode muss aktiviert sein")
End
EndIf
;KlassenId
If CLSIDFromProgID_(@"Excel.Application", @ClsId)
MessageRequester ("", "Excel nicht installiert")
End
EndIf
;Verbindung zur Application
If GetActiveObject_(@ClsId, 0, @App)
MessageRequester ("", "Excel muss geöffnet sein")
End
EndIf
CoUninitialize_()
Re: GetActiveObject und Administrator Modus
Verfasst: 20.09.2012 09:04
von Josh
Danilo hat geschrieben:ClsId muß vom Typ CLSID sein, nicht Integer.
Ups, wie peinlich

In meinem Code habe ich es richtig, aber hab das anscheinend beim rauskitzeln der relevanten Zeilen übersehen.