delphi가 자동으로 시작하는 좋은 방법 만들기
1822 단어 Delphi
그래서 빠른 방법은 이미 만들어진 lnk 파일에서 시작 그룹으로 복사하는 것이다. 이렇게 하면 두 개의 관건적인 경로만 얻으면 ok가 된다.
startup:='';
if (SHGetSpecialFolderLocation(0, CSIDL_COMMON_STARTUP, Pidl) and $80000000) = 0 then
begin
//MAX_PATH
SetLength(LinkDir, 255);
SHGetPathFromIDList(Pidl, PChar(LinkDir));
SetLength(LinkDir, StrLen(PChar(LinkDir)));
startup:=linkdir+'\ .lnk';
end;
programDir:='';
if (SHGetSpecialFolderLocation(0, CSIDL_PROGRAMS, Pidl) and $80000000) = 0 then
begin
SetLength(LinkDir, 255);
SHGetPathFromIDList(Pidl, PChar(LinkDir));
SetLength(LinkDir, StrLen(PChar(LinkDir)));
programDir:=linkdir+'\ \ .lnk';
end;
//exec:='copy "'+programDir+'" "'+startup+'" /y';
// err:=WinExec(PChar(exec),0);
log:=startup+' '+ programDir +' '+ BoolToStr(FileExists(programDir),true);
fLog:=FileCreate('err.log',fmOpenWrite);
cnt:=Length(log);
tmp:=PChar(log);
FileWrite(fLog,log[1] , cnt);
FileClose(fLog);
fIn:=FileOpen(programDir,fmOpenRead);
fOut:=FileCreate(startup,fmOpenWrite);
fLen:=GetFileSize(fIn,nil);
SetLength(buf, fLen);
FileRead(fIn,PChar(buf)^, fLen);
FileWrite(fOut,PChar(buf)^, fLen);
FileClose(fOut);
FileClose(fIn);
복사 정의 변수가 없으면 스스로 쓰면 된다.주요 사고방식은 SHGetSpecialFolderLocation 함수로 관건적인 경로를 얻은 다음에 파일을 복사하면 된다는 것이다.중간에 로그를 쓰는 프로그램은 무시할 수 있습니다.
61k만 컴파일되었고 압축되지 않았습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Delphi 목마 자기 복제법 구현목마가 자기 복사를 실현하는 원리는 프로그램이 실행될 때 먼저 자신이 특정 디렉터리에 있는지 확인하고 그렇지 않으면 계속 실행하며 그렇지 않으면 특정 디렉터리에 복사한 다음에 새로운 프로그램을 실행하고 낡은 프로그램...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.