English
Source / code snippets

Api Files Per programs started knotted

 

CompileMarkSeparation
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>)
Print @$(0)
waitinput
 
07/16/07  
 



Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

no Systemprofil laid out. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Please register circa a Posting To verfassen.
 

Topic-Options

4.347 Views

Untitledvor 0 min.
Sven Bader04/03/23
Jürgen Strahl06/08/22
AndreasS11/27/18
Bernd Lies08/22/13

Themeninformationen

this Topic has 1 subscriber:

unbekannt (1x)


Admins  |  AGB  |  Applications  |  Authors  |  Chat  |  Privacy Policy  |  Download  |  Entrance  |  Help  |  Merchantportal  |  Imprint  |  Mart  |  Interfaces  |  SDK  |  Services  |  Games  |  Search  |  Support

One proposition all XProfan, The there's!


My XProfan
Private Messages
Own Storage Forum
Topics-Remember-List
Own Posts
Own Topics
Clipboard
Log off
 Deutsch English Français Español Italia
Translations

Privacy Policy


we use Cookies only as Session-Cookies because of the technical necessity and with us there no Cookies of Drittanbietern.

If you here on our Website click or navigate, stimmst You ours registration of Information in our Cookies on XProfan.Net To.

further Information To our Cookies and moreover, How You The control above keep, find You in ours nachfolgenden Datenschutzerklärung.


all rightDatenschutzerklärung
i want none Cookie