Deutsch
Quelltexte/ Codesnippets

Api Dateien Per Programme Starten Verknüpfte

 

KompilierenMarkierenSeparieren
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 @&(0)
Print @$(0)
waitinput
 
16.07.2007  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

4.341 Betrachtungen

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

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

unbekannt (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie