Как заблокировать повторный запуск программы
Как сделать shareware программу
Скопировать все файлы вместе с подкаталогами
Включение любого файла в EXEшник
Аналог функции DELAY (задержка)
Преобразование строки из DOS кодировки в Windows и обратно
//Под управлением Delphi не работает - только автономно!! procedure TForm1.FormCreate(Sender: TObject); var Wnd : hWnd; s: PСhar; buff: array [0..127] of сhar; copdata: TCopyDataStruct; begin Wnd := GetWindow(Handle, gw_HWndFirst); while Wnd <> 0 do begin {Если не собственное и не дочернее окно} if (Wnd <> Application.Handle) and (GetWindow(Wnd, gw_Owner) = 0) then begin GetWindowText(Wnd, buff, sizeof(buff)); {Если заголовок совпадает, то...} if StrPas(buff) = Application.Title then //Поторный запуск // ***** Действие при повторном запуске ******* end; Wnd := GetWindow(Wnd, gw_hWndNext); end; end;
//Данный пример запускается только один раз за сессию Windows. procedure TForm1.FormCreate(Sender: TObject); var CRLF : string; begin if GlobalFindAtom('THIS_IS_SOME_OBSCUREE_TEXT') = 0 then GlobalAddAtom('THIS_IS_SOME_OBSCUREE_TEXT') else begin CRLF := #10 + #13; ShowMessage('This version may only be run '+ 'once for every Windows Session.'+CRLF+ 'To run this program again, you '+ 'need to restart Windows, or better yet:' + CRLF + 'REGISTER !!'); Halt; end; end;
//Выключение курсора procedure TForm1.Button1Click(Sender: TObject); var CState: integer; begin CState:= ShowCursor(True); while Cstate >= 0 do Cstate := ShowCursor(False); end; //Включение курсора procedure TForm1.Button2Click(Sender: TObject); var Cstate : integer; begin Cstate := ShowCursor(True); while CState<0 do CState:=ShowCursor(True); bnd;
uses ShellApi; procedure TForm1.Button1Click(Sender: TObject); var OpStruc: TSHFileOpStruct; frombuf, tobuf: array [0..128] of char; begin FillChar(frombuf, Sizeof(frombuf), 0); FillChar(tobuf, Sizeof(tobuf), 0); StrPCopy(frombuf, 'h:\hook\*.*'); StrPCopy(tobuf, 'd:\temp\brief'); with OpStruc do begin Wnd:= Handle; wFunc:= FO_COPY; pFrom:= @frombuf; pTo:=@tobuf; fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION; fAnyOperationsAborted:= False; hNameMappings:= nil; lpszProgressTitle:= nil; end; ShFileOperation(OpStruc); end;
procedure TForm1.Timer1Timer(Sender: TObject); var x,y: integer; begin x:=random(300); y:=random(200); SendMessage(Handle,WM_LBUTTONDOWN,MK_LBUTTON,x+y shl 16); SendMessage(Handle,WM_LBUTTONUP,MK_LBUTTON,x+y shl 16); end; procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Label1.Caption:=IntToStr(x)+','+IntToStr(y); Label1.Left:=x; Label1.Top:=y; end;
Создать файл
nn.rc содержащий строчку
CHECK AVI
"340.avi" или
CHECK WAV "340.avi"
Затем компилировать с помощью
brcc32.exe в ресурс (RES).
Подключить в программе {$R nn.res}
procedure MyDelay(msecs: integer); var FirstTickCount: longint; begin FirstTickCount:=GetTickCount; repeat Application.ProcessMessages; until ((GetTickCount-FirstTickCount) >= msecs); end;
Для этого надо воспользоватся файлом Ansi.pas. В нем описаны две функции: _OTA - перекодировка из DOS в Windows и _ATO - наоборот.