Betriebssystemfehler 193 [ERLEDIGT]

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

Moderator: Moderatoren

Antworten
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
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:

Betriebssystemfehler 193 [ERLEDIGT]

Beitrag von Koverhage »

Für diverse Dateitypen versuche ich über FindExecutableA das zugewiesene Standardprogramm zu ermitteln
und diese dann über RunShell anzuzeigen bzw. zu bearbeiten.
Das funktioniert aber ab Win 7 für manche Dateitypen nicht mehr.

Beispiel: Tif Datei, ich bekomme den Betriebssystemfehler 193
(ERROR_BAD_EXE_FORMAT 193 (0xC1) %1 is not a valid Win32 application.

Wenn ich mir das ermittelte Standardprogramm anzeigen lasse bekomme ich
message.jpg
message.jpg (11.34 KiB) 3303 mal betrachtet
das ist klar eine Dll ist keine ausführbare Applikation,
wie soll ich das bei Win Inside machen ?
Zuletzt geändert von Koverhage am Fr, 01. Apr 2011 11:06, insgesamt 1-mal geändert.
Gruß
Klaus
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: Betriebssystemfehler 193

Beitrag von AUGE_OHR »

Koverhage hat geschrieben:Für diverse Dateitypen versuche ich über FindExecutableA das zugewiesene Standardprogramm zu ermitteln
hm ... macht man das nicht mit ShellExecuteA ?

Code: Alles auswählen

   IF FILE(zPATH+cFILE)
      SHELLOPENFILE(zPATH, cFILE )
   ENDIF



FUNCTION SHELLOPENFILE(cPath, cFILE )
LOCAL lSuccess
LOCAL Retvar := .F.

/*----------------------------------------------------------
  Created from ContactUs.PRG
  Posted to Alaska Generic NG 3/15/01
  By Anand K Gupta  Sun, 24 Dec 2000
----------------------------------------------------------- */

#IFDEF __XPP__

   #define SW_HIDE             0
   #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

#ENDIF

   #define SE_ERR_NOASSOC      31

   lSuccess := DllCall( "SHELL32.DLL"  , DLL_STDCALL, ;
            "ShellExecuteA", AppDesktop():GetHWND(), "open", cPath+cFile,;
            NIL, CurDir(), SW_NORMAL )  // SW_MAXIMIZE

   DO CASE

   CASE lSuccess > 32                  // Aufruf erfolgreich
      Retvar := .T.

   Case lSuccess = SE_ERR_NOASSOC      // Keine verknüpfte Anwendung

      // Falls ShowOpenWithDialog = True, wird der Dialog
      // "Öffnen mit" für diese Datei angezeigt:
      // Shell "RunDLL32 shell32.dll,OpenAs_RunDLL " & Filename

      DllCall( "SHELL32.DLL"  , DLL_STDCALL, ;
            "OpenAs_RunDLL", AppDesktop():GetHWND(), NIL, cPath+cFile,;
            NIL, CurDir(), SW_NORMAL )  // SW_MAXIMIZE

      //  Die Auswahlmöglichkeit wird als Erfolg gewertet:
      Retvar := .T.
   OTHERWISE
      // ShellExecute war erfolglos.
      // Boolean-Standardwert False zurückgeben

      Retvar := .F.
   ENDCASE

RETURN Retvar
gruss by OHR
Jimmy
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
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: Betriebssystemfehler 193

Beitrag von Koverhage »

Habe das jetzt auf ShellExecute geändert und es funktioniert.
Danke.
Gruß
Klaus
Antworten