| |
|
|
- Seite 1 - |
|
| Leider war nicht vorgesehen, dass der Thread Prog_Loader von mir so belegt wurde. Sorry Alfred ! - An sich wollte ich nur ein kleines Beispiel posten. Dann aber hat Jörg Sellmeyer meinen Ergeiz angestachelt. - Ich bitte iF oder einen anderen Admin , meine Beiträge aus dem oben genannten Thread zu löschen. Hier habe ich einen neuen aufgemacht. Die neue Version von Quickstart - 1.07 steht hier zum Download. Es ist nur eine EXE-Datei. Man sollte ein Verzeichnis erstellen und die EXE da hinein kopieren. Beim ersten Start werden zwei Dateien angelegt und dann ist es besser, man hat ein Verzeichnis. - Für die, die das Programm schon haben: Einfach die EXE-Datei über die Vorgängerversion kopieren. So bleiben alle Einstellungen erhalten.
WICHTIG ! Dringend ein Tester mit dem Betriebssystem Windows-ME gesucht !!! |
|
|
| |
|
|
|
| |
|
- Seite 2 - |
|
| An Alle (Genies und Normalos ) Die ISL.DLL von MaiK Strohfeld ist eine phantastische Sache, aber sehr gross und eben eine DLL, die mitgeliefert werden muss. Meine Frage: Gibt es irgendwo einen Codefetzen auf irgendeiner Festplatte, mit dem man eine LNK-Datei innerhalb eines Programmes (in den Einstellungen) erstellen kann ? Ich will eine LNK-Datei in den Autostart eintragen können (Anwenderabhängig) - Das Löschen ist kein Problem. Wer kann helfen ? - |
|
|
| |
|
|
|
Rolf Koch | Hi Horst, wieder eine Sache von iF: Shortcut.pcu |
|
|
| |
|
|
|
| |
|
| |
|
|
|
Alfred Wagner | Hallo Horst das sollte helfen KompilierenMarkierenSeparieren######################################################
Eine Verknüpfung anlegen
######################################################
Original von Andreas Miethe * Juli 2002
######################################################
Geändert von Alfred Wagner * April 2007
######################################################
Definitionen
DEF MultiByteToWideChar(6) ! Kernel32,MultiByteToWideChar
DEF CoInitialize(1) ! OLE32,CoInitialize
DEF CoUnInitialize(0) ! OLE32,CoUninitialize
DEF CoCreateInstance(5) ! OLE32,CoCreateInstance
Konstanten
DEF &PShell_Release 8
DEF &PShell_SetDescription 28
DEF &PShell_SetWorkingDirectory 36
DEF &PShell_SetArguments 44
DEF &PShell_SetIconLocation 68
DEF &PShell_SetPath 80
DEF &PFile_Release 8
DEF &PFile_Save 24
globale Variablen
Declare CLSID_IShellLink#
Declare IID_IShellLink#
Declare IID_IPersistFile#
Proc CreateLink
Declare Pshell&,PFile&,Command&
Declare WideFile$
Parameters LinkFile$,Datei$,Beschreibung$,Arbeitsordner$,Argumentenliste$,IconFile$,IconNo&
Dim CLSID_IShellLink#,16
Long CLSID_IShellLink#,0 = $00021401
Word CLSID_IShellLink#,4 = $0000
Word CLSID_IShellLink#,6 = $0000
Byte CLSID_IShellLink#,8 = $C0
Byte CLSID_IShellLink#,9 = $00
Byte CLSID_IShellLink#,10 = $00
Byte CLSID_IShellLink#,11 = $00
Byte CLSID_IShellLink#,12 = $00
Byte CLSID_IShellLink#,13 = $00
Byte CLSID_IShellLink#,14 = $00
Byte CLSID_IShellLink#,15 = $46
Dim IID_IShellLink#,16
Long IID_IShellLink#,0 = $000214EE
Word IID_IShellLink#,4 = $0000
Word IID_IShellLink#,6 = $0000
Byte IID_IShellLink#,8 = $C0
Byte IID_IShellLink#,9 = $00
Byte IID_IShellLink#,10 = $00
Byte IID_IShellLink#,11 = $00
Byte IID_IShellLink#,12 = $00
Byte IID_IShellLink#,13 = $00
Byte IID_IShellLink#,14 = $00
Byte IID_IShellLink#,15 = $46
Dim IID_IPersistFile#,16
Long IID_IPersistFile#,0 = $0000010b
Word IID_IPersistFile#,4 = $0000
Word IID_IPersistFile#,6 = $0000
Byte IID_IPersistFile#,8 = $C0
Byte IID_IPersistFile#,9 = $00
Byte IID_IPersistFile#,10 = $00
Byte IID_IPersistFile#,11 = $00
Byte IID_IPersistFile#,12 = $00
Byte IID_IPersistFile#,13 = $00
Byte IID_IPersistFile#,14 = $00
Byte IID_IPersistFile#,15 = $46
CoInitialize(0)
CoCreateInstance(CLSID_IShellLink#,0,1,IID_IShellLink#,Addr(PShell&))
Command& = Long(Pshell&,0)
CALL(LONG(COMMAND&,0),PShell&,IID_IPersistFile#,Addr(PFile&))QueryInterface ermitteln
CALL(LONG(COMMAND&,&PShell_SetPath),PShell&,Addr(Datei$))Datei
CALL(LONG(COMMAND&,&PShell_SetDescription),PShell&,Addr(Beschreibung$))Beschreibung
CALL(LONG(COMMAND&,&PShell_SetWorkingDirectory),PShell&,Addr(Arbeitsordner$))Arbeits-Ordner
CALL(LONG(COMMAND&,&PShell_SetArguments),PShell&,Addr(Argumentenliste$))Argumentenliste
CALL(LONG(COMMAND&,&PShell_SetIconLocation),PShell&,Addr(IconFile$),IconNo&)IconLocation
WideFile$ = Space$(Len(LinkFile$)*2)
MultiByteToWideChar(0,1,addr(LinkFile$),-1,addr(WideFile$),Len(WideFile$))LinkFile umwandeln
Command& = Long(PFile&,0)
CALL(LONG(COMMAND&,&PFile_Save),PFile&,Addr(WideFile$),1)LinkFile speichern
Command& = Long(PShell&,0)
CALL(LONG(COMMAND&,&PShell_Release),PShell&)
Command& = Long(PFile&,0)
CALL(LONG(COMMAND&,&PFile_Release),PFile&)
CoUnInitialize()
Dispose CLSID_IShellLink#
Dispose IID_IShellLink#
Dispose IID_IPersistFile#
EndProc
DEF @GSFP(4) ! Shell32,SHGetSpecialFolderPathA
Declare LinkFile$,Datei$,Beschreibung$,Arbeitsordner$,Argumentenliste$,IconFile$,IconNo&,Inifile$
Def Home(0) Translate$(Upper$(Par$(0)),Upper$(FindFirst$(Par$(0))),)
IniFile$ = Home()+ Profan.exe
Proc Desktop
Datei$ = IniFile$
Beschreibung$ =
IconFile$ =
IconNo& = 1
Arbeitsordner$ =
Argumentenliste$ =
LinkFile$ = Space$(255)
GSFP(0,ADDR(LinkFile$),0,0)Pfad zu Desktop
LinkFile$ = Trim$(LinkFile$)+\Profan.exe.lnk
Link anlegen
CreateLink LinkFile$,Datei$,Beschreibung$,Arbeitsordner$,Argumentenliste$,IconFile$,IconNo&
Endproc
Desktop
GSFP(0,ADDR(LinkFile$),2,0)Pfad zu Startmenü-Programme
GSFP(0,ADDR(LinkFile$),5,0)Pfad zu Eigene Dateien
GSFP(0,ADDR(LinkFile$),6,0)Pfad zu Favorieten
GSFP(0,ADDR(LinkFile$),7,0)Pfad zu Autostart
GSFP(0,ADDR(LinkFile$),8,0)Pfad zu Recent
GSFP(0,ADDR(LinkFile$),9,0)Pfad zu Senden an
GSFP(0,ADDR(LinkFile$),11,0)Pfad zu Startmenü
Cls
Print IniFile$ +
Verknüpfung der Profan.exe auf dem Desktop erstellen
Print
Print Bitte Beachten !
Print Das zu verknüpfende Programm muß sich im selben Ordner befinden wie
das ausführende (hier die Profrun32.exe)
Print
Print Die Verknüpfung wird bei einem beliebigen Tastendruck wieder gelöscht
Waitinput
Link löschen
Assign #1, LinkFile$
Erase #1
End
|
|
|
| |
|
|
|
| @Hallo Alfred ...es hilft ! Danke |
|
|
| |
|
|
|
Rolf Koch | Hi Horst, im Ordner von iF, gibt es eine Datei: shortcut-demo.src.prf Da sieht man doch die Parameter |
|
|
| |
|
|
|
| @Hi Rolf
Da sieht man doch die Parameter
na hoffentlich sehe ich das
Eine weitere Frage steht im Raum:
Mit dll&=USEDLL(....) kann ich ein Handle für eine DLL erstellen. Wenn ich aber das Handle einer Datei haben möchte, wie mache ich das ??? |
|
|
| |
|
|
|
Jörg Sellmeyer | Was willst Du denn mit der Datei machen? Wenn Du etwas reinschreiben willst, oder so, ist Assign Dein Freund. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 07.05.2007 ▲ |
|
|
|
| |
|
- Seite 3 - |
|
|
| @Jörg Du solltest mir schon zutrauen, dass ich mit Textdateien umgehen kann
Wahrscheinlich habe ich mich aber falsch ausgedrückt: KompilierenMarkierenSeparierenbut$ = create(ITextbutton,%hwnd,Hilfe ,icon_dll&,#1, 10,25,60,25,10,R)
but1& = val(substr$(but$,1,|))
So wie hier mit der Variable icon_dll& aus einer DLL-Datei die Icons gelesen werden können (#1) möchte ich aus einer EXE-Datei das Programm-Icon lesen können. Der Gag dabei wäre der, dass ich dann Icon und EXE-Datei auf einem Button anzeigen könnte. Dafür muss aber ein Handle her und wie bekomme ich das ???
Aussehen würde der Button dann so wie im Beispiel... |
|
|
| |
|
|
|
Jörg Sellmeyer | Horst Horn
@Jörg Du solltest mir schon zutrauen, dass ich mit Textdateien umgehen kann
Ich dachte so nach der OP...
Das sollte Dir weiterhelfen: KompilierenMarkierenSeparieren $H messages.ph
$H windows.ph
Def ExtractIcon(3) !SHELL32,ExtractIconA
Declare Prog$,hIcon&,index%,Btn&
Prog$=$SysPath + \calc.exe
index%=0
Cls
hIcon&=ExtractIcon(%hinstance,Addr(Prog$),index%)
Btn& = Create(IconButton,%hwnd,,100,100,40,40)
Sendmessage(Btn&,~BM_SETIMAGE,~IMAGE_ICON,hIcon&)
WaitInput
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 07.05.2007 ▲ |
|
|
|
|
| |
|
| |
|
|
|
Frank Abbing |
So wie hier mit der Variable icon_dll& aus einer DLL-Datei die Icons gelesen werden können (#1) möchte ich aus einer EXE-Datei das Programm-Icon lesen können. Der Gag dabei wäre der, dass ich dann Icon und EXE-Datei auf einem Button anzeigen könnte. Dafür muss aber ein Handle her und wie bekomme ich das ???
Den Handle einer Exe oder Dll bekommst du mit der API LoadLibrary(). Das Icon erhälst du dann mit ExtractAssociatedIcon(). Du kannst auch ExtractIconEx() benutzen, das funktioniert nur mit dem Dateinamen. Liefert aber meistens Icons mit niedrigen Auflösungen zurück. Ich denke, dass Profans DrawExtIcon diese API (leider) benutzt. Die optimalen Icons (beste Auflösung) gibt aber die API SHGetFileInfo() zurück, weswegen ich selber es daher verwende. |
|
|
| |
|
|