6 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Har en ide.
Du kunne lave et spy program.
De kunne gøres sådan:
Først kunne vi sætte formens left til omkring 10000 for kan du ikke se formen. Udover det kan du bruge nogle funtioner der gør at du ikke kan se at programmet er tænt.
Derefter indsætte en image og så:
Så kan du lave en timer med dette som kode (lav bare lidt om på koderne):
function GetScreenShot: TBitmap;
var
Desktop: HDC;
begin
Result := TBitmap.Create;
Desktop := GetDC(0);
try
try
Result.PixelFormat := pf32bit;
Result.Width := Screen.Width;
Result.Height := Screen.Height;
BitBlt(Result.Canvas.Handle, 0, 0, Result.Width, Result.Height, Desktop, 0, 0, SRCCOPY);
Result.Modified := True;
finally
ReleaseDC(0, Desktop);
end;
except
Result.Free;
Result := nil;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
//dette skal være din timer.
begin
Image1.Picture.Bitmap := GetScreenShot;
end;
Du kunne tilføjge en kode der nu gemmer imagets i en fil som kunne være tidspunktet og som sagt gemme den i din mappe.
For at dit program vær eneste gang skal starte af sig selv kan du bruge denne kode, som gor ind i regedit og søre for at det vil starte automatisk. Men husk at du kan fjerne det igen fra KØR i start menuen og skriv msconfig og under fanepladet Start:
uses
Registry;
procedure SetAutoStart(AppName, AppTitle: string; bRegister: Boolean);
const
RegKey = '\\Software\\Microsoft\\Windows\\CurrentVersion\\Run';
// or: RegKey = '\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce';
var
Registry: TRegistry;
begin
Registry := TRegistry.Create;
try
Registry.RootKey := HKEY_LOCAL_MACHINE;
if Registry.OpenKey(RegKey, False) then
begin
if bRegister = False then
Registry.DeleteValue(AppTitle)
else
Registry.WriteString(AppTitle, AppName);
end;
finally
Registry.Free;
end;
end;
// Example:
procedure TForm1.Button1Click(Sender: TObject);
begin
// 1.Parameter: Path to your Exe-File
// 2. Parameter: the Title of your Application
// 3. Set (true) or Unset (false) Autorun
SetAutoStart(ParamStr(0), 'Title of your Application', True);
end;
Det er da en ide. Du kunne også lave et program der kan holde styr på din pc.
Den kunne eks.:
Tømme papirskuven med denne kode:
procedure EmptyRecycleBin;
const
SHERB_NOCONFIRMATION = $00000001;
SHERB_NOPROGRESSUI = $00000002;
SHERB_NOSOUND = $00000004;
type
TSHEmptyRecycleBin = function(Wnd: HWND;
pszRootPath: PChar;
dwFlags: DWORD): HRESULT; stdcall;
var
SHEmptyRecycleBin: TSHEmptyRecycleBin;
LibHandle: THandle;
begin { EmptyRecycleBin }
LibHandle := LoadLibrary(PChar('Shell32.dll'));
if LibHandle <> 0 then @SHEmptyRecycleBin :=
GetProcAddress(LibHandle, 'SHEmptyRecycleBinA')
else
begin
MessageDlg('Failed to load Shell32.dll.', mtError, [mbOK], 0);
Exit;
end;
if @SHEmptyRecycleBin <> nil then
SHEmptyRecycleBin(Application.Handle,
nil,
SHERB_NOCONFIRMATION or SHERB_NOPROGRESSUI or SHERB_NOSOUND);
FreeLibrary(LibHandle); @SHEmptyRecycleBin := nil;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
EmptyRecycleBin;
end;
-----------------
Og en der åbner startmenuen med denne:
SendMessage(Form1.Handle, WM_SYSCOMMAND, SC_TASKLIST, 0);
------------------
En der fortæller hvad din pc har. Kunne eks. være hvad dinne dreve har af plads:
var
msg, nl : String;
total, free : int64;
x : Integer;
begin
nl := #13#10;
for x := 1 to 27 do //brug 3-27, hvis drev A og B (diskettedrev) ikke skal med
begin
total := DiskSize(x);
free := DiskFree(x);
if (total <> -1) and (free <> -1) then
begin
msg := msg + 'Disk: ' + chr(64 + x) + ': ' +
'Free: ' + inttostr(round(free / 1024 / 1000)) + ' MB - Total: ' +
inttostr(round(total / 1024 / 1000)) + ' MB' + nl;
end;
end;
Label1.Caption := msg;
end;
-------------------------
Og en med MHZ:
function GetCPUSpeed: Double;
const
DelayTime = 500;
var
TimerHi, TimerLo: DWORD;
PriorityClass, Priority: Integer;
begin
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
Sleep(10);
asm
dw 310Fh
mov TimerLo, eax
mov TimerHi, edx
end;
Sleep(DelayTime);
asm
dw 310Fh
sub eax, TimerLo
sbb edx, TimerHi
mov TimerLo, eax
mov TimerHi, edx
end;
SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);
Result := TimerLo / (1000 * DelayTime);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(Format('Your CPU speed: %f MHz', [GetCPUSpeed]));
end;
---------------------
En der åbner Papirskurven:
uses
ActiveX, ShlObj, ShellApi;
procedure FreePidl(pidl: PItemIDList);
var
allocator: IMalloc;
begin
if Succeeded(shlobj.SHGetMalloc(allocator)) then
begin
allocator.Free(pidl);
{$IFDEF VER90}
allocator.Release;
{$ENDIF}
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
exInfo: TShellExecuteInfo;
begin
// initialize all fields to 0
FillChar(exInfo, SizeOf(exInfo), 0);
with exInfo do
begin
cbSize := SizeOf(exInfo); // required!
fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_IDLIST;
Wnd := Handle;
nShow := SW_SHOWNORMAL;
lpVerb := 'open';
ShGetSpecialFolderLocation(Handle, CSIDL_BITBUCKET, PItemIDLIst(lpIDList));
end;
ShellExecuteEx(@exInfo);
FreePIDL(exinfo.lpIDList);
end;
---------------------------
En funktion der rykker rundt på hvor startmenu knappen er.
Pas på denne funktion.
Den får den til at gå lidt til side:
MoveWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil),
300, 0, 80, 22, true);
Og tilbage (er kun et gæt):
MoveWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil),
0, 0, 59, 22, true);
---------------------------
En der kan finde ud af hvor lang tid pc'en har kørt:
var
starttime: cardinal;
seconds: cardinal;
hours: cardinal;
minutes: cardinal;
remseconds: cardinal;
begin
starttime :=GetTickcount();
seconds:= starttime div 1000;
hours:= seconds div 3600;
minutes:= (seconds - (hours * 3600)) div 60;
remseconds:= (seconds - ((minutes * 60) + (hours * 3600)));
Edit1.text:= inttostr(hours) + ':' + inttostr(minutes) + '.' + inttostr(remseconds);
end;
Det skal laves som en toolbar som kunne ligge i venstre hjørne og kan hjælpe dig.
Brug måske Borderstyle: NONE.
------------------------------------------------------------------------
Eller et drille program der driller pc'en. Nærmest en lille sjov virus:
------------
Rykker rundt på start emnuen, står også oven over:
MoveWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil),
300, 0, 80, 22, true);
Og tilbage (er kun et gæt):
MoveWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil),
0, 0, 59, 22, true);
----------------------------------
Får cursoren til at komme et tilfældigt sted på skærmen:
Randomize;
SetCursorPos(Random(Screen.Width), Random(Screen.Height));
--------------------
Åbner og lukke cd-rom drevene:
Uses
MMSystem
Åbner cd-drevet
mciSendString('Set cdaudio door open wait', nil, 0, 0);
Lukker cd-drevet
mciSendString('Set cdaudio door closed wait', nil, 0, 0);
Det var da en masse ide'r. Nogen af dem skal jeg nemlig igang med. (Når jeg får tid). Jeg håber du kan bruge det.
Det er sådan et svar skal se ud ikke sandt?
Fryd!
Man skal jo hjælpe. Og husk, alt det jeg laver er ikke for up'snes skyld. Men jeg gør det for jeres. For at hjælpe. Jeg ville ønske at folk ville finde ud af hvad up systemet handler om.
Man betaler for arbejde. Da dette har taget ca. 15 at finde, burde en pris i up være ca. 10 up (1 up per. 2 min.)
Men når folk syns det er for billigt at finde en kode frem, som jeg nogen gange har opdaget for 2 up. Syns de det er for lidt. Vis man har koden i et dokument (som alle burde havde), så kan det kun tage max 3 min. Og så er 2 up nok.
Det forstår ingen her på udvikleren!!!
Vis det er noget der tar tid, skal det selvfølgelig betales ordenligt.
Nå, Nu stopper jeg. Håber du kan bruge det. For ellers har det været spild af tid.
:-)
---------------------------Theis F. Hinz (Shafh)-----
----------------------------Theisf@stofanet.dk------
I Fight For The FUTUR, ElLEr SåDaN NoGEt...............
[Redigeret d. 22/03-04 22:04:55 af Theis]
[Redigeret d. 22/03-04 22:05:57 af Theis]