Verknüpfungen erstellen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

SebastianB

Betreff: Verknüpfungen erstellen

BeitragFr, Okt 22, 2004 13:39
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Okt 22, 2004 13:44
Antworten mit Zitat
Benutzer-Profile anzeigen
ExecFile("www.blitzbasic.de")
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb
 

SebastianB

BeitragFr, Okt 22, 2004 13:46
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Okt 22, 2004 13:58
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Okt 22, 2004 14:18
Antworten mit Zitat
Benutzer-Profile anzeigen
@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

BeitragFr, Okt 22, 2004 14:50
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Okt 22, 2004 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
@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

BeitragFr, Okt 22, 2004 16:01
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Okt 22, 2004 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
@Vertex Entschuldige Embarassed

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: Sad
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: Sad Sad
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

BeitragFr, Okt 22, 2004 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.cybercomm.nl/~r.bos.../index.htm
hmm habe noch das gefunden, hat auch 8 byte, scheint aber schwierig zu konvertieren sein Shocked
vertex.dreamfall.at | GitHub
 

SebastianB

BeitragFr, Okt 22, 2004 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
@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. Sad

MfG Sebastian
Never change a running system
 

SebastianB

BeitragDi, Okt 26, 2004 11:25
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Okt 26, 2004 12:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sind keine Funktionen, sondern COM - Interfaces. Da kannst du mit BB nicht so ohne weiteres drauf zugreifen.
 

SebastianB

BeitragDi, Okt 26, 2004 12:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie könnte ich den auf diese COM Interfaces zugreifen?

MfG Sebastian
Never change a running system
 

SebastianB

BeitragDi, Okt 26, 2004 15:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder kennt jemand eine andere Möglichkeit Verknüpfungen zu erstellen?

MfG Sebastian
Never change a running system

Vertex

BeitragDi, Okt 26, 2004 17:32
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Okt 26, 2004 17:44
Antworten mit Zitat
Benutzer-Profile anzeigen
@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

BeitragDi, Nov 02, 2004 13:52
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Mad . Aber trotzdem nochmal thx an alle die mir geholfen haben Very Happy .

MfG Sebastian
Never change a running system
 

IonPainter

BeitragDi, Nov 02, 2004 13:57
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, März 12, 2006 0:33
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group