Hej Hej Bj! Random Images Screen Saver in Delphi tackar Staffan Berg och Q för era svar För att dölja ditt Delphiprogram i aktivitetsfältet:Kolla om ett program redan körs
jag har gjort en skärmsläckare i delphi
en som visar hundar..så jättesött!!!
men nu till problemet..
det är så att jag har satt att skärmsläckaren ska visas var femte minut..
och var femte minut kommer det upp en ny "instans" av min skärmsläckare
vill bara ha en..
hur kollar jag om min skärmsläckare redan körs?
hoppas på svar =D
/bjSv: Kolla om ett program redan körs
Testa denna kod som jag hittade i ett annat forum.
program samplesaver;
uses
Windows;
{$R *.RES}
var
MutexHandle: THandle;
ExternalScreenSaverHandle: Word;
AccessHandle: Word;
begin
// create mutex to prevent multiple screensaver instances
MutexHandle := CreateMutex(nil, TRUE, 'AccessScreenSaver');
if MutexHandle <> 0 then
begin
if GetLastError = ERROR_ALREADY_EXISTS then
begin
// instance already running -> exit
CloseHandle(MutexHandle);
Halt;
end
end;
// check if Access is running
AccessHandle := FindWindowA('OMain',PChar(Chr(0)));
if AccessHandle <> 0 then
begin
// Access window was open, send close
PostMessageA(AccessHandle,16,0,0);
end;
ExternalScreenSaverHandle := WinExec('Flying Through Space.scr S',SW_SHOWNORMAL);
end.
Har ej provat den själv, men det vore kul att få reda på om exemplet uppfyller dina önskemål.
Mvh
/StaffanSv: Kolla om ett program redan körs
http://community.borland.com/article/0,1410,26652,00.html
Slutet av artikeln tar upp ditt problem, följer även med källkod.Sv: Kolla om ett program redan körs
Staffan Berg's svar fungerade MEN programmet syns i "taskbar" eller vad det heter...där alla inaktiva fönster ligger...
hur får man bort det?
/bjSv: Kolla om ett program redan körs
procedure TForm1.FormCreate(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
SetWindowLong(Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
ShowWindow(Application.Handle, SW_SHOW);
end;