Ahoj, neviete náhodou ako mám svoj program skryť tak aby sa ukázal na ploche a aby sme ho mohli používať ale aby sa neukazoval na lište?. Predem dakujem.
Fórum › Delphi
Skrytá obrazovka
myslim treba dat do .Create udalosti okna toto :
SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
V minimalizované programu odchytíš událost minimalizace. Místo ní provedeš skrytí okna a nějakým vhodným způsobem ukážeš "minimalizované" okno v tvém programu, kde na něj půjde kliknout a tím provedeš opět zobrazení tohoto okna.
Pro zjištění minimalizace je potřeba odchytit zprávu WM_SYSCOMMAND (v jednodušším případě by možná stačilo OnResize).
Skrytí okna asi zvládneš.
Teď potřebuješ poslat informaci tomu hlavnímu oknu. Buď těm vedlejším předej jeho referenci a zavolej nějakou tvojí funkci nebo to udělej třeba přes pipe, soket ... to už je jedno.
Stejně tak potřebuješ v hlavním okně "ovládat" vedlejší, takže zase buď referenci do hlavního (nebo ty další možnosti) a při kliknutí např. na povolené tlačítko nebo ... (podle toho jak moc si troufáš :)) zase zobrazit vedlejší okno a tlačítko (případně něco jiného) zakázat/skrýt.
Mě to připadá že to chceš naprogramovat na způsob "explorer.exe" - tak pokud nerozumíš tomu co ti napsal liborb, tak se o to snad radši ani nepokoušej a nejdřív si přečti něco o windowsím API. Ale to nepočítej že ti někdo bude vymýšlet zdrojáky.
Ale abych jenom planě neplkal, tak tady máš příklad jak získat seznam všech běžících procesů (rychle sesmolenej nástřel, jde napsat lépe):
uses
TlHelp32, ... ;
var
ProcessList: TStringList;
procedure GetProcessList; //uloží seznam běžících procesů do StringListu s názvem ProcessList
var
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
ContinueLoop: Boolean;
begin
ProcessList.Clear;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
While Integer(ContinueLoop) <> 0 do
begin
ProcessList.Add(FProcessEntry32.szExeFile);
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
To delphak : Tak spuštění programu v Delphi říkáš .... http://www.lmgtfy.com/?q=delphi+spu%C5%A1t%C4%9Bn%C3%AD+programu
V jiném vlákně o sobě tvrdíš že jsi v delphi pokročilý, tak jsem (asi mylně) předpokládal že budeš schopný pochopit takto jednoduchý příklad a upravit si ho podle svých potřeb. Navíc když je přímo v kódu napsaná poznámka co ta procedura dělá.
Co vlastně očekáváš, že ti ten program někdo napíše a ty to jenom zkompiluješ?
Problém s tím nemám, ale za pokročilého považuji někoho, kdo dokáže předložený kód pochopit, použít, a alespoň částečně upravit pro vlastní potřebu.
Ta procedura dělá to co je u ní napsané - uloží seznam běžících procesů do ProcessList. Takže pokud to neupravíš tak to neukáže nic, a ještě to vyhodí chybu (... ProcessList := TStringList.Create ...).
Pokud chceš udělat lištu, tak znovu - nastuduj si API a google. A počítej s tím že to nebude jednoduché.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Skrytá chyba ? :( — založil Mirek Braho
"Skrytá nápověda" — založil Kalgys
Skrytá konzolová app — založil Antabelus
8 Královen - skrytá logická chyba — založil Petrroll
Obrazovka v delphi — založil Iceemann