Seite 1 von 1

IsMethod() sagt .F. aber trotzdem funktioniert es ?

Verfasst: Sa, 28. Nov 2015 7:47
von AUGE_OHR
der folgende Code wirft eine CD / DVD (erfolgreich) aus.

das passiert indem ich die Method "invokeverb" aufrufe ... also muss es wohl die Method geben.
nun habe ich die Abfrage IsMethod() eingebaut aber die gibt immer .F. zurück ... aber die Schublade öffnet doch :roll:
was ist da los ? jemand eine Idee ?

Code: Alles auswählen

#include "Shfolder.ch" // ***
#include "COMMON.ch"
#PRAGMA LIBRARY( "ASCOM10.LIB" )

PROCEDURE MAIN(strDrive)
LOCAL oShell
LOCAL oFolder
LOCAL oDrive
   DEFAULT strDrive TO "W:\"      // CD-ROM

   oShell   := CreateObject("Shell.Application")
   oFolder  := oShell:NameSpace(CSIDL_DRIVES)    // ssfDRIVES = 0x11
   IF NIL <> oFolder
      oDrive := oFolder:callMethod("ParseName",strDrive)
      IF NIL <> oDrive
         // kein TONE() ... immer .F. ???
         IF IsMethod(oDrive,"invokeverb")
            TONE(1234)
         ENDIF
         IF IsMethod(oDrive,"InvokeVerb")
            TONE(1234)
         ENDIF
         IF IsMethod(oDrive,"InvokeVerbEx")
            TONE(1234)
         ENDIF

         // aber es geht doch ...
*        oDrive:callMethod("invokeverb","A&uswerfen")
         oDrive:invokeverb("A&uswerfen")
      ENDIF
   ENDIF
RETURN
*** https://msdn.microsoft.com/en-us/librar ... 85%29.aspx

Re: IsMethod() sagt .F. aber trotzdem funktioniert es ?

Verfasst: Sa, 28. Nov 2015 9:52
von AUGE_OHR
ich wundere mich das unter Windows 7 nichts passiert ... :-k
W7W.jpg
W7W.jpg (36.44 KiB) 4752 mal betrachtet
bei Auswerfen ist das W unterstrichen und nicht das U wie bei XP ...

Code: Alles auswählen

   IF OnOsVersion < 5
      oDrive:invokeverb("A&uswerfen")
   ELSE
      oDrive:invokeverb("Aus&werfen")
   ENDIF