Czy może ktoś mnie naprowadzić na jakieś informacje
dotyczące robienia formy w aplikacji bez formy, tak
na żywca, no wiecie program begin end, jakieś kursy może
albo przykłady ? Chodzi o to że to jest tak trochę inaczej
niż jak się ma gotową formę i F1 mnie często zawodzi,
co rusz procedury odwołują się do external user32 i mnÓstwo
tych komunikatów, zna ktoś coś przystępnego ?
Robienie formy bez formy ??
Chyba chodzi Ci o utworzenie okna bez TForm.
Zajrzyj do MSDN i poczytaj opis CreateWindow, CreateWindowEx, WNDCLASS, RegisterClass, WindowProc .......
Poszukaj w Internecie książki Charlesa Petzolda Programming Windows
zna ktoś coś przystępnego ?
To zależy :-)
Polecam tutoriale nr 3 i 10 ze strony http://spiff.tripnet.se/~iczelion/tutorials.html.
To tyczy się Assemblera, ale przeczytaj chociaż wstęp-opis.
no nic... dzięki, rozumiem że nie mam co liczyć na przystępny
kursik po polsku :-D
No dobra, mam teraz problem, poskładałem co chciałem
z jaichś źródeł i takich tam no i nic z tego nie rozumiem
jak zwykle, mam trzy pytania:
- Jak to zamknąć po 10 sekundach, ale tak po ludzku ?
- Dlaczego jak tak to skompiluje z 10 razy to mi pasek startu znika ?
- No i w ogóle jak by ktoś mógł wypisać co jest nie potrzebne, co jest źle itp... ?
program Crypter;
uses
Messages, Classes, Windows, SysUtils;
{$R *.RES}
type
TWatek = class(TThread)
protected
procedure Execute; override;
end;
var
WClass: TWndClass;
Handle, Label1, Font1: HWND;
Msg: TMsg;
Watek: TWatek;
procedure TWatek.Execute;
var
i : Integer;
begin
i := 10;
FreeOnTerminate := True;
while i > 0 do
begin
SetWindowText(Label1, PChar(IntToStr(i)));
i := i - 1;
Sleep(1000);
end;
// tu chce zamknąć poprawnie program
end;
function WndProc(HWnd: HWND; Msg: UINT;
wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
case Msg of
WM_DESTROY:
begin
PostQuitMessage(0);
Result := 0;
end
else
Result := DefWindowProc(HWnd,Msg,WParam,LParam);
end;
end;
begin
with WClass do begin
style := CS_PARENTDC;
lpfnWndProc := @WndProc;
cbClsExtra := 0;
cbWndExtra := 0;
hInstance := SysInit.HInstance;
hIcon := LoadIcon(HInstance, IDI_APPLICATION);
hCursor := LoadCursor(0, IDC_ARROW);
hbrBackground := COLOR_BTNFACE + 1;
lpszMenuName := nil;
lpszClassName:= 'Crypter';
end;
RegisterClass(WClass);
Handle := CreateWindow('Crypter', 'Crypter', WS_OVERLAPPED or
WS_CAPTION or WS_SYSMENU or WS_MINIMIZEBOX or WS_VISIBLE,
10, 10, 209, 124, 0, 0, HInstance, nil);
Label1 := CreateWindow('Static','bla bla',
//dlaczego jak nie wpisze static to nie widać tekstu ?
WS_VISIBLE or WS_CHILD or SS_LEFT,
8, 8, 175, 13, Handle, 0, HInstance, nil);
Font1 := CreateFont(-12, 0, 0, 0, 0, 0, 0, 0,
DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH or FF_DONTCARE,
'MS Sans Serif');
SendMessage(Label1, WM_SETFONT, Font1, 0);
ShowWindow(Handle, SW_NORMAL);
UpdateWindow(Handle);
Watek := TWatek.Create(false);
while GetMessage(Msg, 0, 0, 0) do begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end.
ad.1)
to daj:
H:=FindWindow('Crypter',nil);
PostMessage(H,WM_QUIT,0,0);
P.S
Próbowałem PostQuitMessage(0); ale coś nie szło
a i H jako HWND
Application.ShowMainForm:=False;{ niewyświetla formy po starcie programu }
Wpisz to w pliku *.dpr projektu.
<font color="green">Application.ShowMainForm:=False;{ niewyświetla formy po starcie programu }
Wpisz to w pliku *.dpr projektu.</span>
tak ,ale sęk w tym że on to pisze w API :) Żeby Application.ShowMainForm:=False zadzialalo to trza dożucić do uses Forms
H:=FindWindow('Crypter',nil);
PostMessage(H,WM_QUIT,0,0);
dzięki :) <font color="red">chociaŻ</span> zastanwia mnie dlaczego jeśli
zamist H podałem prawdziwy Handle głownego
okna to mi się nawet Delphi zamknął :-D [???]
[b][dopisane][/b]
dodam jeszcze że to się zamyka ładnie pod w2k ale pod w98
powoduje wyjątek krytyczny, co jest nie tak ?
nie mam już siły, a prawie wszystko działało ;-(
<font color="green">dodam jeszcze że to się zamyka ładnie pod w2k ale pod w98
powoduje wyjątek krytyczny, co jest nie tak ?
nie mam już siły, a prawie wszystko działało
</span>
o to nie mam pojęcia ja mam Win98 i ten kodzik pod nim testowałem i wszycho jest cacy.
o to nie mam pojęcia ja mam Win98 i ten kodzik pod nim testowałem i wszycho jest cacy.
hmmm... dziwna sprawa, nie wiem czy coś pozmieniałem czy co
jak chcesz to tu mam http://piechnat.iglu.cz/crypter.zip
no i zauważyłem że jak tam wstawie Halt to wtedy nie ma problemów
pod w98 ale nie wiem czy to jest poprawne, co właściwie robi Halt
czy tak można zamykać programy ?
no tak wyjątek krytyczny ale tylko wtedy jak dałeś:
<font color="green">SendMessage(FindWindow('Crypter', nil), WM_CLOSE, 0, 0); </span>
a ja zrobiłem to przez:
<font color="green">
H:=FindWindow('Crypter',nil);
PostMessage(H,WM_QUIT,0,0);</span>
i nic sie nie dzieje, poprawnie zamyka :-P
i nic sie nie dzieje, poprawnie zamyka :-P
w PHP czy JS to by nie miało żadnego znaczenia :p
dzięki, nigdy bym na to nie wpadł [glowa]