c.m.obrecht
Anmeldungsdatum: 09.03.2006 Beiträge: 377 Wohnort: Hofstetten SO, CH
|
Verfasst am: 10.12.2007, 13:35 Titel: ASM (Windows) - GetCommandLine Problem unter EasyCode |
|
|
Ich entdeckte kützlich eine gute Assembler-IDE mit Form-Designer. Nur werden da manche Variablen initialisiert von denen ich dann nichts weiss jedenfalls habe ich den mci-Player-Code mal in diese IDE übertragen und habe folgendes Problem: Der mit GetCommandLine ermittelte String ist leer sobald das Programm ausserhalb der IDE gestartet wird; innerhalb der IDE wird der Dateiname übergeben (und korrekt verarbeitet was natürlich mit einem FALSE von der mciSendString-Funktion bestätigt wird).
Ausserdem schaffte ich es auf keine der bekannten Methoden einen Datei Öffnen-Dialog anzuzeigen (Fehler bei ofn, habe die Struktur initislisiert und wieder weggelassen falls sie im Hintergrund initialisiert würde etc.)
Hier der Code:
Code: | Include winmm.inc
IncludeLib winmm.lib
.Const
.Data?
cmdlne DD ?
.Data
fehler DB "Fehler", 0
open1 DB "open ", 1024 Dup(?), 0
open2 DB " type MPEGVideo alias MyAlias",0
play DB "play MyAlias",0
stop DB "stop MyAlias",0
filename DB 1024 dup(?)
close DB "close MyAlias",0
mci3 DB 0
.Code
Window1Procedure Proc Private hWnd:HWND, uMsg:ULONG, wParam:WPARAM, lParam:LPARAM
.If uMsg == WM_CREATE
Invoke GetCommandLine
Mov cmdlne, Eax
abspielen:
mov open1[5],0 ;open ,0 und nicht weiter, string leeren
Invoke GetShortPathName, cmdlne, Addr filename, 255
Start:
lea esi, open1
FindLastByte:
lodsb
Or al, al
jnz FindLastByte
dec esi
mov edi, esi
lea esi, filename
CatStrings:
lodsb
Or al, al
jz Done
stosb
jmp CatStrings
Done:
mov al, 0
stosb
;Start:
lea esi, open1
FindLastByte2:
lodsb
Or al, al
jnz FindLastByte2
dec esi
mov edi, esi
lea esi, open2
CatStrings2:
lodsb
Or al, al
jz Done2
stosb
jmp CatStrings2
Done2:
mov al, 0
stosb
Invoke MessageBox, 0, Addr open1, Addr open1, MB_ICONINFORMATION
lea eax, open1
invoke mciSendString, eax, ADDR mci3,0,0
lea ebx, mci3
lea eax, play
invoke mciSendString, eax, ebx,0,0
cmp eax, 0
je ok
Invoke MessageBox, hWnd, Addr fehler, Addr fehler, MB_OK Or MB_ICONERROR
ok:
Return TRUE
.ElseIf uMsg == WM_CLOSE
Invoke mciSendString, Addr stop, Addr mci3, 0, 0
invoke mciSendString, ADDR close, ADDR mci3,0,0
Invoke IsModal, hWnd
.If Eax
Invoke EndModal, hWnd, IDCANCEL
Return TRUE
.EndIf
.ElseIf uMsg == WM_COMMAND
Mov Eax, wParam
.If Ax == IDC_WINDOW1_BUTTON1
Shr Eax, 16
.If Ax == BN_CLICKED
.EndIf
.EndIf
.EndIf
Return FALSE
Window1Procedure EndP
Window1Button1 Proc Private hWnd:HWND, uMsg:ULONG, wParam:WPARAM, lParam:LPARAM
Return FALSE
Window1Button1 EndP
|
_________________ ...längre blomstre gamle nord... |
|