Screenschot machen und in einer Imagekomponente speichern
procedure TForm1.Button1Click(Sender: TObject);
var
ScreenDC: hDC;
TmpRect: TRect;
TmpBitmap: TBitmap;
begin
ScreenDC := GetDC(0);
TmpBitmap := TBitmap.Create;
TmpRect := Rect(0, 0, Screen.Width, Screen.Height);
TmpBitmap.Width := TmpRect.Right - TmpRect.Left;
TmpBitmap.Height := TmpRect.Bottom - TmpRect.Top;
try
BitBlt(TmpBitmap.Canvas.Handle, TmpRect.Left, TmpRect.Top,
TmpBitmap.Width, TmpBitmap.Height, ScreenDC,
TmpRect.Left, TmpRect.Top, SRCCOPY);
Image1.Picture.Bitmap.Assign(TmpBitmap);
finally
TmpBitmap.Free;
ReleaseDC(0, ScreenDC);
end;
end;
|
procedure ChangeIt;
var
Reg: TRegIniFile;
begin
Reg := TRegIniFile.Create('Control Panel');
Reg.WriteString('desktop', 'Wallpaper', 'c:\windows\forest.gif');
Reg.WriteString('desktop', 'TileWallpaper', '1');
Reg.Free;
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE);
end;
|
Mit der Enter- anstatt mit der TAB-Taste das Feld wechseln
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Self.Perform(WM_NEXTDLGCTL, 0, 0); Key := #0; end; end |
procedure TForm1.FormCreate(Sender: TObject); var HR: hRgn; n: array[0..3] of TPoint; begin n[0] := Point(Width div 2, 1); n[1] := Point(1, Height div 2); n[2] := Point(Width div 2, Height); n[3] := Point(Width, Height div 2); HR := CreateEllipticRgn(0, 0, Width, Height); SetWindowRgn(Handle, HR, True); end; |
im Projektquelltext nach CreateForm
begin Application.Initialize; Application.Title := 'Projekt1'; Application.CreateForm(TMain,Main); Application.ShowMainForm := False; Application.Run; end; |
procedure TForm1.FormShow(Sender: TObject); var Owner: hWnd; begin Owner := GetWindow(Handle, GW_OWNER); ShowWindow(Owner, SW_HIDE); end; |
Ein Programm im Taskmanager (Strg+Alt+Entf) verstecken
implementation
{$R *.DFM}
function RegisterServiceProcess(dwProcessID, dwType: DWord): DWord; stdcall;
external 'KERNEL32.DLL' name 'RegisterServiceProcess';
procedure TForm1.Create(Sender: TObject);
begin
RegisterServiceProcess(0, 1);
end;
|
Ein Label mit mehreren Zeilen erstellen
Label1.Caption := 'Zeile 1' + #13 + 'Zeile 2' + #13 + 'Zeile 3'; |
procedure TForm1.FormCreate(Sender: TObject); begin SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) AND NOT WS_CAPTION); ClientHeight := Height; Refresh; end; |
Nur Zahlen in einem Editfeld erlauben
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if NOT (Key in ['0'..'9']) then Key := #0; end; |
Einen eigenen Cursor verwenden
Screen.Cursors[1] := LoadCursorFromFile('aim.Ani');
Cursor := 1;
|
Strg+Alt+Entf / Alt+TAB / Strg+ESC verhindern
VAR OldValue:Longbool; SystemParametersInfo(97,Word(True),@OldValue,0); //STRG+ALT+ENTF deaktiviert SystemParametersInfo(97,Word(False),@OldValue,0); //STRG+ALT+ENTF aktiviert |
with MyForm do
SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,
SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
|
Mit dem folgendem Code ist es möglich auch ein Formular mit BorderStyle bsNone zu bewegen
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; Form1.perform(WM_SysCommand, $F012, 0); end; |
Hiermit kann man einen Button erstellen, wenn das Programm bereits gestartet wurde
Var MyButton : TButton; MyButton := TButton.Create(Form1);
with MyButton do
BEGIN
Parent := Form1;
height := 32;
width := 128;
caption := 'Button';
left := 50;
top := 50;
END;
|
Die Zeit, die seit dem Windowsstart vergangen ist im Label1 anzeigen
Label1.caption := IntToStr(GetTickCount); |
function EnumWinProc(Wnd : HWND) : Boolean; Export; StdCall;
var
WinText : Array[0..255] of Char;
begin
GetWindowText(Wnd, WinText, 255);
Result := True;
if (StrPas(WinText) <> '') and
IsWindowVisible(Wnd) and
(Wnd<>Application.Handle) and
(Wnd<>Form1.Handle)
then
CloseWindow(Wnd);
end;
EnumWindows(@EnumWinProc, LongInt(Self)); |
Ein Fenster transparent darstellen
Procedure MakeWindowTransparent (Form: TForm); Var CurrentStyle : LongInt; Begin Form.Visible := False; CurrentStyle := GetWindowLong(Form.Handle, GWL_EXSTYLE); SetWindowLong(Form.Handle, GWL_EXSTYLE, CurrentStyle Or WS_EX_TRANSPARENT); Form.Visible := True; End; |
procedure SysHideTaskbar;
var wndHandle : THandle;
begin
wndHandle := FindWindow(Pchar('Shell_TrayWnd'), nil);
ShowWindow(wndHandle, SW_HIDE);
end;
|
Taskbar zeigen
procedure SysShowTaskbar;
var wndHandle : THandle;
begin
wndHandle := FindWindow('Shell_TrayWnd', nil);
ShowWindow(wndHandle, SW_RESTORE);
end;
|
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin Canclose:=false; end; |