Español
Fuente/ Codesnippets

Api Archivos Per Programas Starten Verknüpfte

 

KompilierenMarcaSeparación
Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Programme und verknüpfte Dateien per API starten
include zum starten von Programmen und Funktionen
mit den Api-Funktionen ShellExecute, ShellExecuteEx, FindExecutable
Autor: Dieter Zornow
Code ist zur freien Verwendung
Werte für Darstellung sind in windows.ph
Werte für Darstellung
SW_HIDE = 0
SW_MAXIMIZE = 3
SW_MINIMIZE = 6
SW_SHOW% = 5
SW_SHOWMAXIMIZED = 3
SW_SHOWMINIMIZED = 2
SW_SHOWMINNOACTIVE = 7
SW_SHOWNOACTIVATE = 4
SW_SHOWNORMAL = 1
zulässige Operationen
edit lädt die Datei File$ zum editieren mit der verknüpften Anwendung.
explore Startet den Explorer in dem mit File$ angegebenen Verzeichnis.
find Startet den Suchen-Dialog mit dem mit File$ angegebenen Verzeichnis.
open Öffnet die mit File$ angegebene Datei mit der verknüpften Anwendung.
print Druckt die unter File$ angegebene Datei mit der verknüpften Anwendung.
null =Leerstring, Je nach Betriebssystem erster Eintrag in der Registry oder open
Def ShellExecuteEx(1) !SHELL32,ShellExecuteExA
Def ShellExecute(6) ! shell32,ShellExecuteA
Def FindExecutable(3) ! Shell32,FindExecutableA
Declare file#,dir#,operation#,para#,SEI#,lpverb#

proc NO_ASSOCIATION

    @messagebox(Haben Sie etwas Geduld, der Windowsdialog Öffnen mit wird nun gestartet,Die Datei ist für diesen Zugriff noch nicht verknüpft,64)
    clear operation#,file#,para#
    Dispose operation#
    Dispose file#
    Dispose para#
    let operation$=
    let para$=shell32.dll,OpenAs_RunDLL +file$
    let file$=RUNDLL32.EXE
    Dim operation#,len(operation$)+1
    string operation#,0 = operation$
    Dim file#,len(file$)+1
    string file#,0 = file$
    Dim para#,len(para$)+1
    string para#,0 = para$
    ShellExecute(getactivewindow(),operation#,file#,para#,dir#,show%)
    Dispose operation#
    Dispose file#
    Dispose para#
    Dispose dir#
    Return

endproc

proc FILE_ERROR

    case equ(returnvalue&,0):@messagebox(Es sind nicht mehr genügend Systemresourcen vorhanden,Fehler,64)
    case equ(returnvalue&,11):@messagebox(Ausführende Datei ist defekt oder keine Windowsdatei,Fehler,64)
    case equ(returnvalue&,5):@messagebox(Der Zugriff auf die Datei wurde verweigert,Fehler,64)
    case equ(returnvalue&,27):@messagebox(Unvollständige oder unzulässige Verknüpfung,Fehler,64)
    case equ(returnvalue&,30):@messagebox(Andere DDE-Operationen werden gerade ausgeführt,Fehler,64)
    case equ(returnvalue&,29):@messagebox(Der DDE-Aufruf war nicht erfolgreich,Fehler,64)
    case equ(returnvalue&,28):@messagebox(Das Zeitlimit zum Aufruf wurde überschritten.,Fehler,64)
    case equ(returnvalue&,32):@messagebox(Eine notwendige DLL wurde nicht gefunden,Fehler,64)
    case equ(returnvalue&,2):@messagebox(Die auszuführende Datei wurde nicht gefunden.,Fehler,64)
    case equ(returnvalue&,8):@messagebox(Nicht genügend Arbeitsspeicher vorhanden.,Fehler,64)
    case equ(returnvalue&,3):@messagebox(Das übergebene Verzeichnis ist nicht vorhanden,Fehler,64)
    case equ(returnvalue&,26):@messagebox(Datei ist schon geöffnet, Fehler beim gemeinsamen Dateizugriff,Fehler,64)
    return

endproc

Proc Find

    Declare result#,result$,returnvalue&,dir$ dir$ kann als Parameter übergeben werden
    Parameters file$,what%                    ist aber unnötig, wenn der qualifizierte Pfad in File$
    Dim file#,len(file$)+1                    übergeben wird
    Dir$=
    Dim Dir#,len(dir$)+1
    dim result#,255
    String file#,0=Upper$(file$)
    string dir#,0 =dir$
    let returnvalue&=FindExecutable(file#,dir#,result#)
    let result$= @string$(result#,0)
    dispose file#
    dispose dir#
    dispose result#
    case equ(returnvalue&,31):let result$=Datei ist noch nicht mit einer Anwendung verknüpft
    case equ(what%,0):Return result$ gibt Executable zurück
    case equ(what%,1):Return returnvalue& Prüfen ob File oder Pfad vorhanden

endproc

Proc Properties

    Parameters file$
    Dim SEI#,60  SHELLEXECUTEINFO
    Clear SEI#
    Dim lpverb#,11
    Dim file#,Add(Len(file$),1)
    String file#,0=Upper$(file$)
    String lpverb#,0=properties
    Long SEI#,0=60 Size of the structure
    long SEI#,4= $C Mask = SEE_MASK_INVOKEIDLIST
    Long SEI#,8=GetActiveWindow()
    Long SEI#,12=lpverb#
    Long SEI#,16=file#
    Long SEI#,28=1 show
    ShellExecuteEx(SEI#)
    Dispose lpverb#
    Dispose file#
    Dispose SEI#

EndProc

Proc mailTo

    Declare returnvalue&,Operation$,File$,Para$,Dir$,show%
    Parameters adresse$,subject$,text$
    operation$=open
    weitere parameter &Cc,&Bcc,&attach, bei mehr Parameter ?subject ev. in &subject ändern
    File$=mailto:+adresse$+?Subject=+subject$+&Body=+text$
    para$=
    Dir$=
    show%=1
    Dim operation#,len(operation$)+1
    string operation#,0 = operation$
    Dim file#,len(file$)+1
    string file#,0 = file$
    Dim para#,len(para$)+1
    string para#,0 = para$
    Dim dir#,len(dir$)+1
    string dir#,0 = dir$
    let returnvalue&=ShellExecute(getactivewindow(),operation#,file#,para#,dir#,show%)
    Dispose operation#
    Dispose file#
    Dispose para#
    Dispose dir#
    Return returnvalue&

endproc

Proc GoOnlineTo

    Declare returnvalue&,Operation$,File$,Para$,Dir$,show%
    Parameters adresse$
    operation$=open
    File$=http://+adresse$
    para$=
    Dir$=
    show%=1
    Dim operation#,len(operation$)+1
    string operation#,0 = operation$
    Dim file#,len(file$)+1
    string file#,0 = file$
    Dim para#,len(para$)+1
    string para#,0 = para$
    Dim dir#,len(dir$)+1
    string dir#,0 = dir$
    let returnvalue&=ShellExecute(getactivewindow(),operation#,file#,para#,dir#,show%)
    Dispose operation#
    Dispose file#
    Dispose para#
    Dispose dir#
    Return returnvalue&

endproc

Proc Execute

    Declare returnvalue&
    Parameters operation$,file$,para$,dir$,show%
    Dim operation#,len(operation$)+1
    string operation#,0 = operation$
    Dim file#,len(file$)+1
    String file#,0=Upper$(file$)
    Dim para#,len(para$)+1
    string para#,0 = para$
    Dim dir#,len(dir$)+1
    string dir#,0 = Upper$(dir$)
    let returnvalue&=ShellExecute(getactivewindow(),operation#,file#,para#,dir#,show%)

    If returnvalue&=31 Anwendung nicht verknüpft

        NO_ASSOCIATION

    endif

    if lt(returnvalue&,31)

        FILE_ERROR

    endif

    Dispose operation#
    Dispose file#
    Dispose para#
    Dispose dir#
    Ausführung erfolgreich = > 32 (handle der Anwendung)
    return returnvalue&

endproc

Beispiele
cls
------------------------------
Parametererklärung
e-mailadresse, Subject,Text für Body// alles andere wird in der Proc gesetzt
startet Standard e-mail client mit voreingestellten Werten
mailTo dizor@gmx.net,Gruß aus Bangkok,Ein Hallo an alle
------------------------------------------------------------------------
Parametererklärung
gewünschte Internetadresse// alles andere wird in der Proc gesetzt
Startet den Standard Internetexplorer mit voreingestellter Url
GoOnlineTo dieterzornow.gmxhome.de/
------------------------------------------------------------------------
Parametererklärung
Der Fensterparameter wird in der Proc gesetzt mit getactivewindow(), deshalb nur 5
1 operation = open oder edit siehe oben zulässige Operationen
2 auszuführende Datei = jede Art von Datei, *.doc, *.exe, *.bat, *.txt,
3 Parameter für das Programm = eventuelle Parameter//sollte bei Dokumenten usw.  sein
4 Arbeitsverzeichnis = das Arbeitsverzeichnis des Programmes
5 Darstellung = Größe usw. siehe oben
Startet den Finddialog im Root-Verzeichnis C:
Execute find,c:,,,1
-----------------------------
Startet den Explorer größt möglich im angegebenen Pfad
Execute explore,c:Eigene Dateien,/e,,3
-----------------------------
Startet die win.ini, wenn sie verknüpft ist
Execute open,WIN.INI,,,1
-----------------------------
Startet die Readme.htm im Windowsverzeichnis, dürfte in jeder Version vorhanden sein
einmal mit open = Internetexplorer und einmal mit edit = HTMLEditor
Execute open,README.HTM,,$Winpath,3
Execute edit,README.HTM,,$Winpath,3
-----------------------------
Startet Notepad und öffnet die Win.ini
Execute open,Notepad.exe,win.ini,$Winpath,3
---------------------------------------------------------------------------
Gibt die mit der Datei verknüpfte Anwendung zurück, letzter Parameter = 0
Prüft ob die eingegebene Datei oder Pfad existiert, Rückgabe = 2 bedeutet Datei oder Pfad existiert nicht
Rückgabe <> 2 bedeutet Datei oder Pfad existiert. letzter Pararmeter = 1
Find c:Programmieren!MeineProgsshellexecute_apiproperties.prf,0
Find c:Programmieren!MeineProgsshellexecute_apiproperties.prf,1
---------------------------------------------------------------------------
Ruft den Eigenschaftendialog von Windows auf
Properties C:PlayerDZPlayer.exe
---------------------------------------------------------------------------
Print @&(0pan class=s2>)
Imprimir @$(0)
waitinput
 
16.07.2007  
 



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

4.348 Views

Untitledvor 0 min.
Sven Bader03.04.2023
Jürgen Strahl08.06.2022
AndreasS27.11.2018
Bernd Lies22.08.2013

Themeninformationen

Dieses Thema ha 1 subscriber:

unbekannt (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie