delphi가 자동으로 시작하는 좋은 방법 만들기

1822 단어 Delphi
인터넷에는 많은 방법이 있지만 모두 lnk 단축키를 만들어야 하기 때문에 필요하지 않은 라이브러리를 인용하여 실행 가능한 파일이 매우 크다.
그래서 빠른 방법은 이미 만들어진 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만 컴파일되었고 압축되지 않았습니다.

좋은 웹페이지 즐겨찾기