![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как стартовать программу минимизированной при автозагрузке? [D7, WinXP]
gear © (2006-04-17 15:33:00)Как стартовать программу свёрнутой в трэй при автозагрузке? А вслучае ручного запуска, чтобы нормально запускалась? Как такое можно реализовать?
tesseract (2006-04-17 15:46:00) [1]пример старта без показа главной формы
Mutex := CreateMutex(nil, false,'OleServer');
if (Mutex = 0) or (Mutex=INVALID_HANDLE_VALUE) then exit;
if GetLastError=ERROR_ALREADY_EXISTS then begin
ReleaseMutex(Mutex);
exit;
end;
Application.CreateHandle;
ShowWindow(Application.Handle,SW_HIDE);
Application.ShowMainForm:=false;
application.Initialize;
Application.CreateForm(TfmWatch, fmWatch);
Application.Run;
пример обработки командной строки
не пинать ногами - из какого-то старого выдран
function ParseCommandLine:word;
var i:word;
CmdLine:string;
argcount:word;
lPos:word;
rPos:word;
cmdTemp:PChar;
begin
result:=0;
argcount:=0;
cmdTemp:=GetCommandLine;
// Ничо не поняли
if cmdTemp=nil then exit;
if length(Cmdtemp)=0 then exit;
CmdLine:=CmdTEmp;
if pos('/',CmdLine)=0 then exit;
Delete(CmdLine,1,pos('/',CmdLine)-1);
if length(CmdLine)<2 then exit;
repeat
lpos:=pos('/',CmdLine);
if lpos=0 then break;
rpos:=pos(' ',CmdLine);
if rpos=0 then
begin
inc(argcount);
SetLength(args,argcount);
args[argcount-1]:=Copy(CmdLine,lpos+1,Length(cmdLine));
break;
end
else
begin
inc(argcount);
SetLength(args,argcount);
args[argcount-1]:=Copy(CmdLine,lpos+1,rpos-2);
trim(args[argcount-1]);
Delete(CmdLine,1,rpos);
end
until length(Cmdline)<=0;
result:=argcount;
SetLength(action,argcount);
for i:=0 to length(args)-1 do
action[i]:=0;
for i:=0 to length(args)-1 do
begin
Args[i]:=AnsiUpperCase(Args[i]);
case Ord(Args[i][1]) of
ord('L'): if args[i]='LIST' then action[i]:=cmdList;
ord('I'): if args[i]='INFO' then action[i]:=cmdGetVersion;
ord('V'): if args[i]='V' then action[i]:=cmdGetVersion;
ord('P'): if args[i]='PAUSE' then begin action[i]:=cmdpause; ifpause:=true; end;
ord('?'):if args[i]='?' then begin action [i]:=cmdHelp; end;
ord('H'):if args[i]='HELP' then begin action[i]:=cmdHelp; end;
end;
end;
end;
wal (2006-04-17 15:37:00) [2]Через свойства ярлыка, через параметры командной строки
зуегт (2006-04-17 15:37:00) [3]укажи какой нить параметр для запуска проги...
типа C:\myprog.exe /minimize_to_tray
а в программе обработай начальные параметры... уже не помню как :(