Verknüpfungen erstellen
Übersicht

SebastianBBetreff: Verknüpfungen erstellen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Leute,
kann man mit BB Verknüpfungen erstellen? Eventuell vielleicht auch mit der WINAPI? Bin für jede Antwort dankbar. MfG Sebastian |
||
Never change a running system |
René Meyer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ExecFile("www.blitzbasic.de") | ||
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb |
SebastianB |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ist nicht so ganz was ich meinte. Ich meine die Windows Verknüpfungen (*.lnk), die sich z. B. im Startmenü befinden. Vielleicht existiert eine Funktion mit dem Namen "CreateShortcut" oder so ähnlich.
MfG Sebastian |
||
Never change a running system |
Apocalyptic |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So eine Funktion gibts nicht, aber sowas kann man sich vielleicht selber basteln. Such mal hier nach dem Aufbau von *.lnk Dateien: http://www.wotsit.org/ | ||
Suum cuique
[ www.ffs-net.de.vu ] [ Raycaster ] |
SebastianB |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Apocalyptic Die Site ist sehr gut. Hab' auch gleich was interessantes gefunden: http://www.wotsit.org/download.asp?f=shortcut
In dem Dokument befindet sich auf Seite 2 eine Tabelle in der, unter der Spalte Offset, sich solche Zahlen wie "0h", "4h" oder auch "3Ch" befinden. Was bedeuten diese? MfG Sebastian |
||
Never change a running system |
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Unter Offset steht, an welcher Bytestelle der gesuchte Wert steht. das h am ende dieser Zahlen bedeutet, das dies Hexadezimalzahlen sind (zum Vergleich: wie haben dezimalzahlen, also von 0...bis 9)
Das Hexadezimalsystem ist wunderbar geeignet für den Computer, da man nicht so blöd umrechnen muss. Da man jetzt aber 16 Ziffern benötigt, hat man sich einfacht dazu entschlossen, die fehlenden mit Ziffern aufzufüllen. Hier ein beispiel Code: [AUSKLAPPEN] Hexadezimalsystem Zehnersystem
1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 A 10 B 11 C 12 D 13 E 14 F 15 10 16 etc. |
||
SebastianB |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Timo Danke für den Tipp.
Ich habe das jetzt mal ausprobiert: Code: [AUSKLAPPEN] bank=CreateBank(70) PokeInt bank, 0, 76 PokeByte bank, 4, 1 PokeByte bank, 5, 20 ;edit: Hatte vorher 70, war falsch PokeByte bank, 6, 2 PokeByte bank, 7, 0 PokeByte bank, 8, 0 PokeByte bank, 9, 0 PokeByte bank, 10, 0 PokeByte bank, 11, 0 PokeByte bank, 12, 0 PokeByte bank, 13, 192 PokeByte bank, 14, 0 PokeByte bank, 15, 0 PokeByte bank, 16, 0 PokeByte bank, 17, 0 PokeByte bank, 18, 0 PokeByte bank, 19, 70 ;pokeInt bank, 20, ;Hier müssen die Flags eingesetzt werden ;pokeInt bank, 24, ;Und hier die Attribute Doch ich habe ein weiteres Problem: Bei der Verknüpfung müssen noch Daten gesetzt werden und zwar in Form eines qword (64-bit). Unter Blitz gibt es meiner Meinung nach keinen qword sondern nur den Integer (32-bit). Was kann man da machen? MfG Sebastian |
||
Never change a running system |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Blitz hat übrigns die Präfixe $ für Hexadezimalzahlen und % für Binärzahlen. Es würde sich also besser machen, wenn du Parts aus der Doku als Hex schreibst, damit man vergleichen kann.
Zu deinen Problem: Das dürfte das MSYS-Time-Format sein: 16 Bit Jahr - Short 8 Bit Monat - Byte 8 Bit Tag - Byte 8 Bit Stunde - Byte 8 Bit Minute - Byte 6 Bit Sekunde und 10 Bit Millisekunde - Short (hier musst du mit Bitoperanten hantieren) mfg olli |
||
vertex.dreamfall.at | GitHub |
SebastianB |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Vertex Entschuldige ![]() Ich habe das Programm mal umgekrempelt, sodass man mal vorhandene Verknüpfungen lesen kann: Code: [AUSKLAPPEN] datei=OpenFile("C:\Editor.lnk") Print ReadInt(datei) ;Erstes Zeichen "L" Print ReadByte(datei) ;Hier kommt die GUID Print ReadByte(datei) Print ReadByte(datei) Print ReadByte(datei) Print ReadByte(datei) Print ReadByte(datei) Print ReadByte(datei) Print ReadByte(datei) Print ReadByte(datei) Print ReadByte(datei) Print ReadByte(datei) Print ReadByte(datei) Print ReadByte(datei) Print ReadByte(datei) Print ReadByte(datei) Print ReadByte(datei) Print Bin$(ReadInt(datei)) ;Hier sind die Flags Print Bin$(ReadInt(datei)) ;Hier sind die Attribute Print ReadShort(datei) ;Sekunde und Millisekunde zusammen Print ReadByte(datei) ;Minute Print ReadByte(datei) ;Stunde Print ReadByte(datei) ;Tag Print ReadByte(datei) ;Monat Print ReadShort(datei) ;Jahr CloseFile datei WaitKey End Für das Datum bekomme ich das Ergebnis: ![]() Code: [AUSKLAPPEN] Sekunde und Millisekunde 24576 Minute 189 statt 11 Stunde 153 statt 14 Tag 83 statt 22 Monat 79 statt 10 Jahr 150 statt 2004 Da dachte ich, ich hätte das Datum in der falschen Reihenfolge (ms->Jahr)ausgelesen und drehte die Reihenfolge (Jahr->ms) um, doch ich bekomme immer noch so merkwürdige Zahlen: ![]() ![]() Code: [AUSKLAPPEN] Sekunde und Millisekunde 24576 Minute 189 statt 11 Stunde 153 statt 14 Tag 83 statt 22 Monat 79 statt 10 Jahr 450 statt 2004 Woran kann das bloß liegen? edit: Hab noch meine genauen Creation time-Daten hinzugefügt. MfG Sebastian |
||
Never change a running system |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://www.cybercomm.nl/~r.bos.../index.htm
hmm habe noch das gefunden, hat auch 8 byte, scheint aber schwierig zu konvertieren sein ![]() |
||
vertex.dreamfall.at | GitHub |
SebastianB |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@vertex Das sieht ja echt gut aus 8) . Ich konnte es mir zwar noch nicht genau angucken, aber es scheint das richtige zu sein. Mein Ergebnis kommt dann am Montag. Muss jetzt nach Hause. ![]() MfG Sebastian |
||
Never change a running system |
SebastianB |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe dieses Websitenprogramm mal ausprobiert und versucht auf den 22. Oktober, 14:11:15 zu kommen. Das Ergebnis lautet:
0 0 147 253 64 184 196 1 Das Datum baut sich von rechts nach links auf. Also wenn ich rechts die Zahl um 1 erhöhe, überbrücke ich viele Jahre. Wenn ich das ganze weiter links mache wird es immer kleiner. Merkwürdig ist, dass die beiden Zahlen ganz links überhaupt nichts verändern, wenn ich sie hochsetze. Außerdem gibt es mehrere Möglichkeiten um auf ein bestimmtes Datum mit Uhrzeit zu kommen. Ich nehme stark an, dass es sich hierbei um die Millisekunden handelt. Die werden mir aber weder von Windows noch von diesem Programm angezeigt. Ich hab' noch ein bisschen weitergesucht, was die Verknüpfungen betrifft: In dem Dokument, was den Aufbau der *.lnk-Dateien erklärt, wurde von dem IShellLink Objekt geredet, mit denen man auch Verknüpfungen erstellen kann. Ich habe daraufhin die Registry von meinem XP durchsucht und bin auf 4 Objekte gestoßen, die mich auf die Datei actxprxy.dll im Ordner System32 verweisen. Die Datei habe ich dann im Editor geöffnet und bin folgendes gestoßen: Code: [AUSKLAPPEN] ;Funktionen IHlinkFrame linkTarget ;Ziel der Verknüpfung? IHlink IHlinkSite IShellLinkW ;Verknüpfung Unicode IShellLinkA ;Verknüpfung ANSI ;Weitere Funktionen, die mit Verknüpfungen zusammenhängen ICustomIconManager IUICommandTarget ITargetNotify2 ITargetNotify ITargetFrame2 ITargetContainer ITargetEmbedding ITargetFrame ITargetFramePriv IOleCommandTarget ;Konstanten? HICON_UserFree HICON_UserUnmarshal HICON_UserMarshal HICON_UserSize 2 gestoßen. Ich dachte, das wären Funktionsnamen (Ist bei User32.dll auch so) und hab auch gleich eine decls-Datei erstellt. Doch er kann die Funktionen in der Datei nicht finden. Vielleicht könnt ihr etwas damit anfangen. Ich bin weiterhin für jeden Hinweis sehr dankbar. MfG Sebastian |
||
Never change a running system |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das sind keine Funktionen, sondern COM - Interfaces. Da kannst du mit BB nicht so ohne weiteres drauf zugreifen. | ||
SebastianB |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie könnte ich den auf diese COM Interfaces zugreifen?
MfG Sebastian |
||
Never change a running system |
SebastianB |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oder kennt jemand eine andere Möglichkeit Verknüpfungen zu erstellen?
MfG Sebastian |
||
Never change a running system |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://vbnet.mvps.org/index.ht...tcheat.htm
Ist ja nicht daaaaas Problem, von VB nach BB zu konvertieren. mfg olli |
||
vertex.dreamfall.at | GitHub |
SebastianB |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@vertex Ja das ist eine Möglichkeit Verknüpfungen zu erstellen. Doch:
1. Diese Art von Verknüpfung kann unter Windows XP nicht auf eine EXE-Datei verweisen (s. Note-Teil) 2. Ich muss meiner Verknüpfung eine Tastenkombination zuweisen. 3. Und es wäre ganz nett, wenn man das Icon umändern kann. Tut mir leid, dass ich es so kompliziert mache. Ich bin schon den ganzen Tag dabei eine Lösung zu suchen. MfG Sebastian |
||
Never change a running system |
SebastianB |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habs jetzt: 8)
Code: [AUSKLAPPEN] neuerlink="C:\Windows\Startmenü\Autostart\Programm.lnk" 'Link erzeugen set link=WshShell.CreateShortcut(neuerlink) 'Ziel der Links festlegen link.TargetPath="C:\Programme\Spiel\Spiel.exe" 'Tastenkombination vereinbaren link.HotKey="F12" 'Icon zuweisen link.IconLocation="C:\Programme\Spiel\Spiel.ico" 'Links abspeichern link.save Ist nur ein bisschen schade, dass das nicht mit BB geht. Man könnte BB ja mal um die Ansteuerung von COM-Objekten erweitern. Norton Antivirus mag ja keine VBScripte ![]() ![]() MfG Sebastian |
||
Never change a running system |
IonPainter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hier im forum gabs mal ein tut wie man visual basic dlls mit blitzbasic nutzen kann... alternativ beherrscht purebasic auch com objekte und das kannste wiederum als dll dann exportieren. | ||
Stephan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es geht auch etwas einfacher:
Folgendes in die DECLS: .lib "VB5STKIT.dll" CreateLink%(lpstrFolderName$, lpstrLinkName$, lpstrLinkPath$, lpstrLinkArgs$): "fCreateShellLink" lpstrFolderName$ --> Ordner in welchem der Link erstellt werden soll lpstrLinkName$ --> Name unter dem der Link erscheinen soll lpstrLinkPath$ --> Linktargetdatei (Zieldatei) lpstrLinkArgs$ --> Commandlineargumente Das Linkicon gleicht dem Targeticon Die dll ist im VB5 Standartkit enthalten |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group