Hacking  
  Listopad 19 2017 16:54:01  
 
Nawigacja
folder Portal
. Artykuły
. Download
. Forum
. Szukaj
. FAQ
. Regulamin
folder Hacking
. Gry Hakerskie
. Filmy
folder Delphi
. Kursy
. Faq
. Źródła
. Komponenty
. Artykuły
folderWebmaster
. JavaScripts
. Skrypty PHP
folderRóżne
. Kontakt
. Zlokalizuj ip
Aktualnie online
. Gości online: 2

. Użytkowników online: 0

. Łącznie użytkowników: 153,889
. Najnowszy użytkownik: Gawrsd3f
Ostatnie artykuły
. Metoda ataku symlin...
. Asembler x86 w pigułce
. Binder plików z komp...
. [Asembler/MASM] Pobi...
. Braifuck 4 fun
faq z 2001r z 4p
Delphi FAQ 1
 

 

1. Jak wyświetlić obrazek z rozszerzeniem *.jpg?
2. Jak wstawić do RichEdit jakieś symbole?
3. Jak wycinać, wklejać tekst do schowka?

4. Jak wczytać bitmapę z rozszerzeniem *.dat?

5. Jak skonwertować zmienn± String na PChar i odwrotnie?

6. Jak zapisać wartość do rejestru?
7. Jak skopiować plik?
8. Jak ściąć plik z Internetu?
9. W jaki sposób wysłać pocztę lub otworzyć stronę Internetow±?
10. Jak wstawić do RichEdit datę lub godzinę?
11. Jak stworzyć komponent podczas działania programu?
12. Jak zamkn±ć, zresetować, wylogować się z systemu?
13. Jak ustawić kursor w podanym przeze mnie miejscu?
14. W Delphi 4 nie mam polskich liter, co zrobić?
15. Jak stworzyć animację przesuwaj±cego się napisu?
16. Jak utworzyć, usun±ć katalog?
17. Co to jest biblioteka DLL?
18. Jak wykryć czy w komputerze jest zainstalowana karta muzyczna?
19. Jak sprawdzić jaka jest pojemność dysku i ile jest wolnego miejsca?
20. Jak odczytać ścieżkę katalogu Windows i System
21. Jak dopisać do pliku kilka linii.
22. Jak zmienić tapetę pulpitu?
23. W jaki sposób regulować dzwięk?
24. Czy jest jakiś inny sposób odgrywania dĽwięku niż poprzez komponent MediaPlayer?
25. U mnie wszystko gra, ale gdy uruchamiam program u kolegi pokazuje mi się bł±d: "Cannot find file vcl50.bpl". O co chodzi?
26. Jak po najechaniu kursorem na Image zmienił się obrazek, a po wyjściu z obszaru obrazek powrócił do poprzedniego? 
27. Jak skonwertować obrazek z *.bmp na *.jpg?
28. Jak umieścić w ComboBox listę wszystkich zainstalowanych czcionek?

29. Jak wysun±ć szufladkę CD-ROM-u.

30. Jak skopiować plik, aby jego postęp był pokazywany na ProgressBar?

31. Jak zrobić, aby forma lub komponent miały inny kształt?

32. Jak ukryć kursor myszy?

33. Co zrobić, aby pliki graficzne były w jednym EXE, a nie w osobnych plikach?
34. Jak załadować z zasobów kursor?
35. Jak wydrukować dokument przy pomocy np. Worda?

36.  Jak pobrać ikony programów?

37. Jak ukryć program z paska zadań?

38. Jak zablokować ponowne uruchomienie programu?

39. Jak ograniczyć położenie kursora myszki?

40. Jak korzystać z plików INI?

41. Jak sprawdzić czy dany plik istnieje?

42. Jak przenieś skasować, zmienić nazwę katalogu?

43. Jak zminimalizować, przywrócić, ukryć okno? 

44. Jak utworzyć skrót do programu na pulpicie lub w menu start?
45. Jak zmierzyć szerokość i wysokość tekstu w pikselach? 
46. Jak odczytać numer seryjny dysku lub dyskietki? 
47. Jak pobrać uchwyt ( Handle ) dowolnego okna?
48. Jak zmienić tekst dowolnego okna?

49. Jak wydrukować stronę testow± drukarki? 

50. Jak skonwertować zmienn± Integer na PChar i odwrotnie?

51. Jak w Edicie wyświetlić datę, tak, żeby dwukropek był zawsze na tym samym miejscu
?
52. Jak nie korzystaj±c z komponentu dokleić do pliku program EXE? 

53. Jak wywołać migotanie programu na pasku zadań?

54. Jak przechwycić uruchamianie wygaszacza ekranu? 

55. Jak rysować po komponencie. 

56. Jak mogę rysować po pasku tytułowym formy?

57. Jak zrobić, aby na formie był wyświetlany zegarek? 

58. Jak zmienić datę w systemie?

59. Jak usun±ć ( odinstalować ) aplikację? 

60. Co zrobić by menu "Help" było po prawej stronie, a reszta po lewej.


1. Jak wyświetlić obrazek z rozszerzeniem *.jpg?
Do listy modułów uses dodaj słowo jpeg. To nie zadziała na pewno w Delphi 2, a być może w Delphi 3.

Image.Picture.LoadFromFile('C:\image.jpg');



2. Jak wstawić do RichEdit jakieś symbole?
Najpierw musisz znać numer ASCII takiego znaku. W tym celu użyj mojego programu do podawania kodów ASCII. Jest to program z kodem Ľródłowym i żeby go używać musisz go skompilować. Żeby to zrobić potrzebujesz Delphi 5. Jeżeli nie masz takiej wersji Delphi - napisz do mnie, a ja prześle Ci wersje skompilowan±. 
Gdy już znasz kod takiego symbolu do RichEdit wpisz: 
   RichEdit.SelText := #169 // np. taki numer....



3. Jak wycinać, wklejać tekst do schowka?
Możesz użyć funkcji:
Memo1.CopyToClipBoard; // Kopiowanie...
Memo1.CutToClipboard;  // Wycinanie...
Memo1.PasteFromClipboard;  // Wklejanie...



4. Jak wczytać bitmapę z rozszerzeniem *.dat?
Nie możesz do tego celu użyć komponentu Image gdyż podczas wczytywania zasygnalizuje bł±d. Zmieniasz więc rozszerzenie obrazka, a programie piszesz:
var
   B : TBitmap;
begin
   B := TBitmap.Create;
   B.LoadFromFile('C:\Bitmap.dat'); // wczytanie...
   Canvas.Draw(10, 10, Bitmap); // w punkcie 10, 10 zostaje wczytaan
   B.Free;
end;


5. Jak skonwertować zmienn± String na PChar i odwrotnie?
Zmienn± PChar na String  zmiania funkcja: StrPas, a String na PChar zmienia funkcja StrPCopy. 


6. Jak zapisać wartość do rejestru?
Aby wykorzystywać funkcje zapisywania wartości do rejestru należy do listy uses dopisać słowo: Registry. 
Proszę zapoznać się z artykułem "Rejestry" w dziale "Delphi". Tam dokładne omówienie tego zagadnienia. 



7. Jak skopiować plik?
Poniższy kod nie dość, że kopiuje plik to daje do wyboru jaki plik skopiować i gdzie. WskaĽnik postępu pokazywany jest na komponencie Gauge.

procedure TForm1.Button1Click(Sender: TObject);
var
  Src : File;
  FSize,i: Integer;
  F : Pchar;
begin
if OpenDialog.Execute then //Wybranie pliku...
  AssignFile(Src, OpenDialog.FileName); 
  SaveDialog.FileName := OpenDialog.FileName;
  Reset(Src ,1);
  FSize := FileSize(Src); //Pobranie rozmiaru...
  Label1.Caption := IntToStr(FSize) + ' bajtów'; 
{ Wyswietlenie na etykiecie rozmiaru pliku }

  Sleep(1000);
try
if SaveDialog.Execute then //Gdzie zapisać...

 Application.ProcessMessages;

F := PChar(OpenDialog.FileName);

  CopyFile(F, PChar(SaveDialog.FileName), True);
for
i:=0 to 100 do
begin

  Application.ProcessMessages;
  Sleep(Trunc(FSize / 1024)); //Czekaj...
             
  Progress.Progress := I; //Pokazuje wskaĽnika postępu

 end;
finally
ShowMessage('Kopiowanie zakończone!');

end;
end;



8. Jak ściąć plik z Internetu?
Przede wszytkim należy do listy modułów uses dodać słowo: URLMon.

 if URLDownloadToFile(nil,'http://www.serwer.com/plik.htm', 'c:\plik.htm',0, nil) <> 0 then
    ShowMessage('Bł±d podczas ści±gania pliku');


9. W jaki sposób wysłać pocztę lub otworzyć stronę Internetow±?
Należy zastosować funkcje ShellExecute. Do listy modułów musisz dodać słowo SHELLAPI. 

ShellExecute(Handle, 'open', 'www.programowanie.of.pl', nil, nil, SW_SHOWMAXIMIZED);

Przy okazji tego pytania omówię także konstrukcje funkcji ShellExecute. Pierwszy parametr to uchwyt okna (co to jest? Patrz: WinAPI FAQ ) Kolejny parametr to znak, że chcesz skorzystać z funkcji open, następnie podajesz ścieżkę programu, adres strony, lub adres e-mail ( w postaci: mailto:boduch@poland.com ). Ostatnim parametrem jest sposób wyświetlenia okna: 
Domyślne:  SW_SHOWNORMAL;
Zmaksymilizowane: SW_SHOWMAXIMIZED;
Zminimalizowane: SW_SHOWMINIMIZED;
Ukryte: SW_HIDE;



10. Jak wstawić do RichEdit datę lub godzinę?
Po pierwsze, aby wstawić datę lub godzinę do RichEdit musisz datę skonwertować. Robi to funkcja DateToStr, TimeToStr. Ogólna postać:

RichEdit1.SelText := DateToStr(Date);
RichEdit1.SelText := TimeToStr(Time);

Powyższy kod może nie działać w starych wersjach Delphi gdyż nie s± przystosowane do daty 2000 i pokazuj± date: 99-12-30 :) 



11. Jak stworzyć komponent podczas działania programu?
Oto kodzik: 

var
  Button : TButton;
begin
  Button := TButton.Create(Self);
  Button.Parent := Self; // Przypisanie rodzica
  Button.Caption := 'Przycisk 1'; 
  Button.Left := 100;
  Button.Top := 100;
end;



12. Jak zamkn±ć, zresetować, wylogować się z systemu?
Win32Check(ExitWindows(0, 0));
// Zaloguj się jako nowy użytkownik

Win32Check(ExitWindowsEx(EWX_REBOOT, 0));
//Uruchom ponownie komputer

Win32Check(ExitWindowsEx(EWX_SHUTDOWN, 0));
// Wył±cz komputer


13. Jak ustawić kursor w podanym przeze mnie miejscu?
To tego służy funkcja SetCursorPos(10, 10);
W tym przypadku ustawi kursor myszy w punkcie 10, 10.



14. W Delphi 4 nie mam polskich liter, co zrobić?
Uruchom rejestr Windows i stwórz now± wartość typu DWORD:

HKEY_CURRENT_USER\Software\Borland\Delphi\4.0\
Editor\Options\NoCtrlAltKeys

Z wartości± na "1". 


15. Jak stworzyć animację przesuwaj±cego się napisu?
Poczytaj artykuł o animacjach w dziale "Delphi". 


16. Jak utworzyć, usun±ć katalog?
Funkcja MkDir('Nazwa katlogu') tworzy katalog, a funkcja RmDir('Nazwa katalogu') go usuwa.



17. Co to jest biblioteka DLL?
Jeżeli chcesz się dowiedzieć co to jest biblioteka DLL i jak się j± tworzy poczytaj artykuł na ich temat. 



18. Jak wykryć czy w komputerze jest zainstalowana karta muzyczna?
Po pierwsze musisz dodać do listy uses nazwę modułu MMSystem.
Należy użyć funkcji WaveOutGetNumDevs

if WaveOutGetNumDevs > 0 then 
  Label1.Caption := 'Jest karta dĽwiękowa!'
else
  Label1.Caption := 'Brak karty dĽwiękowej!';



19. Jak sprawdzić jaka jest pojemność dysku i ile jest wolnego miejsca?
To podawania wolnej ilości na dysku służy funkcja DiskFree, a do podawania całego rozmiaru służy DiskSize.

begin
  Label1.Caption := Format('Wolne miejsce: %d',[DiskFree(0)]);
  Label2.Caption := Format('Całe miejsce: %d', [DiskSize(0)]);
end;



20. Jak odczytać ścieżkę katalogu Windows i System
Do uzyskiwania takiej informacji służ± funkcje GetWindowsDirectory i GetSystemDirectory.

var
  WDir : array[0..255] of char;
begin
GetSystemDirectory(WDir, SizeOf(WDir));
Label1.Caption := WDir;

Żeby uzyskać ścieżkę katalogu System należy po prostu zamiast GetWindowsDirectory podstawić GetSystemDirectory.



21. Jak dopisać do pliku kilka linii.
var
  TF : TextFile;
begin
  AssignFile(TF, 'Nazwa pliku.txt');
  Append(TF);
    Writeln(TF, 'Moja strona w Internecie:');
    Writeln(TF, 'www.programowanie.of.pl');
  CloseFile(TF);
end;


22. Jak zmienić tapetę pulpitu?
var
 
S : String;
begin
  S := 'zdjecie.bmp';
  SystemParametersInfo(SPI_SETDESKWALLPAPER,0, PChar(s),
   SPIF_UPDATEINIFILE or SPIF_SENDWININICHANGE);


23. W jaki sposób regulować dzwięk?
To tego celu służy funkcja WaveOutSetVolume. Wartość dzwięku jest warości± Integer. Poniższa linia ustawia dzwięk na wartości maksymalnej:

WaveOutSetVolume(0, $FFFFFFFF);

poniższa linia ustawia dzwięk na cichszy: 

WaveOutSetVolume(0, $20002000);

Konstrukcja jest dość prosta. Po znaku $ ustawiana jest głośność prawego i lewego głośnika. W powyższych przypadkach na obu głośnikach wartość jest taka sama. Aha, jeżeli chcesz korzystać z tej funkcji musisz dodać do listy uses słowo MMSystem. 


24. Czy jest jakiś inny sposób odgrywania dĽwięku niż poprzez komponent MediaPlayer?
Tak, musisz skorzystać z modułu MMSystem. Następnie skorzystaj z funkcji PlaySound:

PlaySound('Dzwiek.wav', 0, SND_FILENAME);

Więcej o dĽwiękach poczytaj sobie w dziale "Delphi".



25. U mnie wszystko gra, ale gdy uruchamiam program u kolegi pokazuje mi się bł±d: "Cannot find file vcl50.bpl". O co chodzi?
Jest to wina kompilacji. Musisz skompilować program wraz z plikiem vcl50.bpl, czyli plikiem pakietu. Jeżeli Twój kumpel nie posiada Delphi, nie posiada także tego pliku. Możesz doł±czyć ten plik do programu, albo skompilować program wraz z tym plikiem. Wtedy program znacznie "zgrubieje", ale jest to konieczne. Aby to zrobić musisz otworzyć menu "project" wybrać "Options" i odznaczyć opcję "Bulid with runtime packages".



26. Jak po najechaniu kursorem na Image zmienił się obrazek, a po wyjściu z obszaru obrazek powrócił do poprzedniego?
¦ci±gnij sobie komponent, który działa tak jak Image z tym, że potrafi kontrolować wejście myszki w obszar komponentu. ¦ci±gnij go tutaj.
Jeżeli nie wiesz jak go zainstalować poczytaj to.


27. Jak skonwertować obrazek z *.bmp na *.jpg?
Pocz±wszy od Delphi 3 znajduje się moduł jpeg. To właśnie dzięki niemu można dokonać konwersji. Wystarczy, że zrobisz coś takiego:

var
  Bitmap : TBitmap;
  JPG : TJPEGImage;
begin
  try
    Bitmap := TBitmap.Create;
    Bitmap.LoadFromFile('C:\plik.bmp');
    JPG := TJPEGImage.Create;
    JPG.Assign(B);
    JPG.SaveToFile('C:\plik.jpg');
  finally
    B.Free;
    JPG.Free;
  end;
end;



28. Jak umieścić w ComboBox listę wszystkich zainstalowanych czcionek?
Wystarczy tylko jedna linia kodu:

ComboBox1.Items := Screen.Fonts;


29. Jak wysun±ć szufladkę CD-ROM-u.
Należy skorzystać z modułu MMSystem. Oto kod:

mciSendString('Set cdaudio door open wait',nil,0,handle); //wysuń
mciSendString('Set cdaudio door closed wait',nil,0,handle); //wsuń


30. Jak skopiować plik, aby jego postęp był pokazywany na ProgressBar?
Można skorzystać z poniższego kodu: ProgressBar jest pod nazw± CopyB.

procedure TMainFrm.BtnInstallClick(Sender: TObject);
var
  FSize : Integer; //Rozmiar pliku
  Src : File; //Nazwa programu do skopiowania
  I : Integer;
begin

try
  AssignFile(Src, 'NazwaPlik.exe');// Nazwa
  Reset(Src, 1);// Otwórz...
  FSize := FileSize(Src);// Pobierz rozmiar

try
  while not Done do
    begin
      for I:=0 to 100 do
      begin
        Application.ProcessMessages;
        Sleep(Trunc(FSize / 10000));
        CopyFile(PChar(InstallProgram),          PChar('C:\Nazwa.exe'), True);//Kopiuj
        Application.ProcessMessages;
        CopyB.Progress := I;//Pokaz na wskazniku
          if I = 100 thne //Jeżeli koniec to Done na True
            Done := True; 
  if (Done) then //Jeżeli Done n True to przerwij
    Break;
     end;
   end;
 except
   raise Excepion.Create(
          'Bł±d podczas kopiowania!');
  end;
    finally
      CloseFile(Src);
   end;


31. Jak zrobić, aby forma lub komponent miały inny kształt?
Poniższa linia robi z formy elipsę. Jeżeli chcesz zmienić kształt innego komponentu to zamiast Handle podajesz np. Button1.Handle

SetWindowRgn(Handle,CreateEllipticRgn(0, 0, Width, Height), True);


32. Jak ukryć kursor myszy?
ShowCursor(False); 
ShowCursor(True);


33. Co zrobić, aby pliki graficzne były w jednym EXE, a nie w osobnych plikach?
Musisz skorzystać z edytora zasobów dostarczanego wraz z Delphi. Jeżeli nie wiesz jak to zrobić poczytaj artykuł o tym w dziale Delphi.


34. Jak załadować z zasobów kursor?
Gdy już masz przygotowany kursor w edytorze zasobów robisz np. coś takiego:

{$R NAZWAZASOBU.RES}
const
  crMojKursor = 1; //Numer musi być większy od zera.
begin
  Screen.Cursors[crMojKursor] := 
       LoadCursor(hInstance,'MOJKURSOR');
 Form1.Cursor := crMojKursor;

Następuje tutaj załadowanie kursora z zasobów. Na samym pocz±tku deklarowana jest nazwa zasobu, a póĽniej stała z nazw± kursora. Więcej o zasobach możesz poczytać sobie w dziale Delphi.


35. Jak wydrukować dokument przy pomocy np. Worda?
Musisz podać nazwę pliku z rozszerzeniem *.doc. Aby wydrukować taki dokument skorzystaj z modułu SHELLAPI;

uses ShellAPI;

begin
  ShellExecute(Handle,'print','C:\Dokument.doc',nil, nil, SW_HIDE);

Dzięki zastosowaniu znacznika SW_HIDE okno Worda się nie pokaże, a dokument zostanie wydrukowany. Tak samo możesz wydrukować dokument używaj±c Notatnika. 


36.  Jak pobrać ikony programów? 
Należy skorzystać z modułu SHELLAPI oraz funkcji ExtractIcon

uses ShellApi; 

procedure
TForm1.FormCreate(Sender: TObject); 
begin
 
  Image1.Picture.Icon.Handle:=
 ExtractIcon(Hinstance,'c:\Program.exe',32); 
end;


37. Jak ukryć program z paska zadań?
Pasek musi być ukryty zanim stworzone zostan± formy. Poniższy kod należy więc dodać do Ľródła projektu ( Project | View Source ). Tak powinna wygl±dać całość:

program Project1;

uses
Forms,
Windows,
Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

var
  Ex : Integer;

begin
Application.Initialize;

 Ex:=GetWindowLong(Application.Handle, GWL_EXSTYLE);
 SetWindowLong(Application.Handle,GWL_EXSTYLE,
 Ex or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);

Application.CreateForm(TForm1, Form1);
Application.Run;
end.

Program jest ukrywany z paska zadań dzięki parametrowi WS_EX_TOOL_WINDOW.


38. Jak zablokować ponowne uruchomienie programu?

var
  hM : HDC;
begin
 
hM:=CreateFileMapping(THANDLE($FFFFFFFF),nil,
 PAGE_READONLY,0,32,'ApplicationTestMap');

if GetLastError=ERROR_ALREADY_EXISTS then
begin
  ShowMessage('Nie można uruchomić tego samego programu');
  Application.Terminate;
  CloseHandle(hM);
end;


39. Jak ograniczyć położenie kursora myszki?
Służy do tego funkcja ClipCursor. A całość może wygl±dać np. tak:

var
R : TRect;
begin
  with R do
  begin
    Top := 20;
    Bottom := 20;
    Left := 20;
    Right := 20;
  end;
 ClipCursor(@R);
end;


40. Jak korzystać z plików INI?
W dziale Delphi znajdziesz artykuł dotycz±cy plików INI, zapisywanie odczyta itp.


41. Jak sprawdzić czy dany plik istnieje?
Służy do tego funkcja FileExists. Np:

if FileExists('C:\Moj.txt') then
  ShowMessage('Plik isnieje!')
else
  ShowMessage('Plik nie istnieje!');


42. Jak przenieś skasować, zmienić nazwę katalogu?
Najlepiej jest skorzystać z modułu SHELLAPI. Oto przykład:

uses ShellAPI;

procedure TForm1.Button1Click(Sender: TObject);
var R : TSHFileOpStructA;
begin
 with
R do
 begin

  Wnd:=Handle; // oznaczenie uchwytu
  wFunc:=FO_COPY;// opcja
  pFrom:='c:\moj'; // z katalogu
  pTo:='c:\dokumenty\moj';// do katalogu...
  fFlags:=FOF_NOCONFIRMMKDIR;
 end;
 if
SHFileOperation(R)<>0 then
   ShowMessage('Bł±d podczas kopiowania')
end;

Zamiast parametru FO_COPY możesz użyć:

  • FO_DELETE - kasuje wFrom
  • FO_RENAME - zmienia nazwę z wFrom do w wTo
  • FO_MOVE - przenosi z wFrom do wTo

43. Jak zminimalizować, przywrócić, ukryć okno?
Służy do tego funkcja ShowWindow. Pierwszym parametrem jest uchwyt okna, a drugim stan okna. Może on być:

  • SW_HIDE - ukrywa okno.
  • SW_MAXIMIZE - maksymalizuje okno.
  • SW_MINIMIZE - minimalizuje. 
  • SW_SHOw - pokazuje.   

Np. ShowWindow(Handle, SW_SHOW);



44. Jak utworzyć skrót do programu na pulpicie lub w menu start?
To nie zadziała w wypadku Delphi 2. W tym wypadku tworzony jest skrót do programu Notepad. 

uses  ShlObj, ActiveX, ComObj, Registry;

procedure TForm1.Button1Click(Sender: TObject);
var  MyObject:IUnknown;
     MySLink:IShellLink; 
     MyPFile:IPersistFile;  
     FileName:String;
     Directory:String;  
     WFileName:WideString;  
     MyReg:TRegIniFile;
begin
 MyObject:=CreateComObject(CLSID_ShellLink);
 MySLink:=MyObject as IShellLink;  
 MyPFile:=MyObject as IPersistFile;
 FileName:='C:\Windows\NOTEPAD.EXE';  
 with MySLink do 
 begin   
  SetPath(PChar(FileName));
  SetWorkingDirectory(PChar(ExtractFilePath(FileName)));  
 end;

 MyReg := TRegIniFile.Create('Software\MicroSoft\Windows\'+

'CurrentVersion\Explorer');

             // Poniższe dodaje skrót do desktopu
 Directory := MyReg.ReadString('Shell Folders','Desktop','');

 // A to do menu Start
Directory := MyReg.ReadString('Shell Folders','Start Menu','')+
'\Microspace';

  CreateDir(Directory);

 WFileName := Directory+'\Notatnik.lnk';  
 MyPFile.Save(PWChar(WFileName),False);
 MyReg.Free;
end;


45. Jak zmierzyć szerokość i wysokość tekstu w pikselach?
Służ± do tego funkcje:
Canvas.TextWidth, Canvas.TextHeight; 

Canvas.TextWidth('Programowanie');


46. Jak odczytać numer seryjny dysku lub dyskietki? 

var
 Bufor:array[0..MAX_PATH] of Char;
 MaxCompLength, FileSystemFlags : Integer;
 Drive:Char;
 Serial:DWORD;
begin
 Drive:='A';
 GetVolumeInformation(PChar(Drive + ':\'),Bufor,SizeOf(Bufor),
  @Serial,MaxCompLength,FileSystemFlags,nil,0);
end;

Zmienna "Serial" posiada numer seryjny dyskietki, a "Bufor" etykietę. 
W przypadku dysku podaje numer partycji.


47. Jak pobrać uchwyt ( Handle ) dowolnego okna?
Służy do tego funkcja "FindWindow". Żeby pobrać uchwyt należy znać właściwość "Caption" lub "ClassName". Jeżeli nie znamy, któregoś z tych elementów wstawiamy nil. Przykład pobrania uchwytu Inspektora Obiektów. 

var
  H : THandle;
begin
  FindWindow(nil,'Object Inspector');


48. Jak zmienić tekst dowolnego okna?
Musisz znać uchwyt okna. (patrz: przykład powyżej).

SetWindowText(Handle, 'Nowa nazwa okna');


49. Jak wydrukować stronę testow± drukarki?
Należy odwołać się do biblioteki rundll.dll i skorzystać z modułu ShellAPI.

uses ShellAPI;

ShellExecute(Handle, 'open',
'rundll32','msprint2.dll, RUNDLL_PrintTestPage',nil,
SW_SHOWNORMAL);


50. Jak skonwertować zmienn± Integer na PChar i odwrotnie?
Chyba najprościej będzie użyć funkcji Ord i Chr:

 // Char na Integer
 ShowMessage(IntToStr(Ord('C'))); // kod ASCII litery Char

// i odwrotnie...
 ShowMessage(Chr(25)); // znak odpowiadaj±cy cyfrze 25


51. Jak w Edicie wyświetlić datę, tak, żeby dwukropek był zawsze na tym samym miejscu?
Do tego celu najlepiej jest użyć komponentu "MaskEdit" ( paleta: Additional ). 
Wybierasz właściwość "EditMask" - pojawia się okno do wyboru maski, a następnie klikasz na przycisku "Mask" i w oknie wybierasz plik "us.dem". Po prawej stronie pojawiła się lista masek. Wybierz z niej "Short Time" i OK! Gotowe. 


52. Jak nie korzystaj±c z komponentu dokleić do pliku program EXE?
Jest to średnio trudne. Postępuj według poniższych wskazówek:
Naszym celem będzie dodanie do zasobów Windows. Ponieważ standardowy edytor zasobów nie umożliwia tego musimy to zrobić ręcznie. Do jednego katalogu skopiuj Twój plik EXE oraz program "brcc32.exe", który jest częściom Delphi [ znajduje się w katalogu ...\Delphi\Bin ]. 
Teraz stwórz plik z rozszerzeniem *.rc, a następnie uruchom go w Notatniku. Wpisz taki tekst:

PROGRAM RCDATA "Program.exe"

Program.exe to oczywiście nazwa Twojego programu, który chcesz wł±czyć do EXEca. Ok, teraz zapisz ten plik. 
Musisz użyć programu brcc32.exe, aby skompilować zasób. W tym celu uruchom okienko MS - DOS'a i przejdĽ do katalogu w którym skopiowałeś program brcc32.exe. W MS - DOS'ie do katalogu przechodzi się poleceniem:

cd NazwaKatalogu

a przejście do katalogu wyżej powoduje polecenie:

cd..

Gdy już jesteś w tym katalogu wpisz:

brcc32.exe PlikRC.rc

"PlikRC.rc" to plik, który przed chwil± edytowałeś. Jeżeli wszystko pójdzie dobrze w katalogu powinieneś ujrzeć plik z rozszerzeniem *.res, który zawiera Twój program! Moje gratulacje - właśnie doł±czyłeś program do zasobów. 
Teraz w programie należy w którymś miejscu dopisać linię:

{$R PLIKRC.RES}

Teraz w którejś procedurze wpisz:

var
  Res : TResourceStream;
begin
  Res:=TResourceStream.Create(hInstance,'PROGRAM',RT_RCDATA);
  Res.SaveToFile('Program.exe'); // zapisz na dysk
  Res.Free;
end; 

Jeżeli postępowałeś wg. powyższych wskazówek powinno się udać. Po kompilacji w jednym EXEcu powinien znaleĽć się Twój doklejony program. 


53. Jak wywołać migotanie programu na pasku zadań?
Normalnie jeżeli chesz, aby na pasku zadań nazwa Twojego programu się "zapaliła" to piszesz coś takiego:

FlashWindow(Application.Handle,True);

Jeżeli chcesz, aby program przestał być zaznaczony to zamiast "True" piszesz "False". Teraz jeżeli chcesz, aby nazwa raz się zapalała, a raz "gaisła" to musisz na formie postawić komponent Timer. Zmien "Enabled" na False. W procedurze "OnTimer" tegoż komponentu piszesz:

var
  Miganie : Boolean;
begin
  Miganie := not Miganie;
  FlashWindow(Application.Handle, Miganie);

Teraz żeby uruchomić zegar musisz napisać:

Timer1.Enabled := True;


54. Jak przechwycić uruchamianie wygaszacza ekranu?
W sekcji "private" umieść tak± linię kodu:

procedure WMSYSCommand(var M: TMessage); message WM_SYSCOMMAND;

W sekcji "Implementation" natomiast:

procedure TForm1.WMSYSCommand(var M: TMessage);
begin
  if M.WParam <> SC_SCREENSAVE then inherited
  else ShowMessage('Uruchamianie wygaszacza...');
end;

55. Jak rysować po komponencie.

var 
  C:TCanvas;
begin
  C:=TCanvas.Create;
  C.Handle:=GetDC(Button1.Handle); // na Buttonie
    {Tu możesz rysować jak po zwykłym Canviasie}
  C.Free;

56. Jak mogę rysować po pasku tytułowym formy?
Jest to dość trudnę gdyż rysować możesz za pomoc± funkcji API:
1. W sekcji "Interface" dodaj linię:
  var
     DC : Integer;
2. W OnCreate formy wpisz:
     DC := GetWindowDC(handle);
3. Teraz w procedurze wpisz: 

var
  Text : PChar;
begin
  Text := 'Adam Boduch';
  TextOut(DC, 3, 4, Text, StrLen(Text));

Funkcja "TextOut" to funkcja API. Najpierw mamy uchwyt do paska, póĽniej pozycja wyświetlanego tekstu, tekst i w końcu określenie długości tekstu ( StrLen ). 


57. Jak zrobić, aby na formie był wyświetlany zegarek?
Na formie umieszczasz komponent "Timer" i w procedurze "OnTimer" wpisujesz: 

  Canvas.Brush.Style := bsClear; // przeĽroczyste tło 
  Refresh; // odśwież
  Canvas.TextOut(20, 20, TimeToStr(Time)); {
   wyświetl w punkcie 20, 20 }

58. Jak zmienić datę w systemie?

var
 Data:Systemtime;
begin
 Data.wMonth:= 12;
 Data.wDay:=22;
 Data.wYear:=1995;
 SetLocalTime(Data);

59. Jak usun±ć ( odinstalować ) aplikację?
W przykładzie, który za chwilę podam nasza aplikacja usuie samego siebie. Tak. W tym celu stworzony zostanie program ( ! ) ktory usunie pliki naszego programu. Program zostanie stworzony w katalogu Windows\Temp, gdyż ten katalogu jest często oprózniany, a nasz program zajmował będzie tylko 18 bajtów! Tak, to będzie program dosowy z rozszerzeniem *.bat. A więc oto kod:

var
  TF: TextFile;
begin
  PostMessage(Handle, wm_Quit, 0, 0); // zamkniecie naszej aplikacji

  AssignFile(TF, 'C:\Windows\Temp\kill.bat'); // zapisz plik
  Rewrite(TF);
  Writeln(TF, ':kill');
  Writeln(TF, 'cd ' + ParamStr(0));
  Writeln(TF, 'del ' + ExtractFileName(ParamStr(0)));
  Writeln(TF, 'if exist ' + 
  ExtractFileName(ParamStr(0))+ ' goto kill');
  CloseFile(TF);

// uruchom program
  WinExec('C:\Windows\Temp\kill.bat', sw_Hide);

60. Co zrobić by menu "Help" było po prawej stronie, a reszta po lewej. 
Zakładaj±c, że "MainMenu" to komponent "TMainMenu", a "Pomoc1" to menu z pomoc± można zrobić tak w procedurze "OnCreate" formy:

procedure TForm1.FormCreate(Sender: TObject);
var
  Info: TMenuItemInfo;
  Buff: array[0..MAX_PATH] of Char;
begin
  Info.cbSize := SizeOf(TMenuItemInfo);
  Info.fMask := MIIM_TYPE;
  Info.dwTypeData := Buff;
  Info.cch := SizeOf(Buff);
  GetMenuItemInfo(MainMenu1.Handle, Pomoc1.Command, False, Info);
  Info.fType := Info.fType or MFT_RIGHTJUSTIFY;
  SetMenuItemInfo(MainMenu1.Handle, Pomoc1.Command, False, Info);
end;

 

Oceny
Tylko zarejestrowani użytkownicy mogą oceniać zawartość strony
Zaloguj się lub zarejestruj, żeby móc zagłosować.

Brak ocen. Może czas dodać swoją?
Logowanie
Nazwa użytkownika

Hasło



Nie masz jeszcze konta?
Zarejestruj się

Nie możesz się zalogować?
Poproś o nowe hasło
Shoutbox
Musisz zalogować się, aby móc dodać wiadomość.

18-11-2017 18:28
Dzien dobry Potrzebna kasa? Zaden problem! https://goo.gl/eaN
BmN

17-11-2017 09:45

17-11-2017 08:02

16-11-2017 16:08
áĺńďëŕňíűĺ ďîđíî ôčëüěű ěîëîäĺíüęčěč ďîđíî ěîëîäĺíüęčĺ ëĺńáč [url=http://angela
dorer.com/]đóńńęîĺ
ďîđíî đóńńęčěč ěîëîäĺíüę

16-11-2017 13:44
You've got wonderful information these. <a href="http://najlep
szetabletkinamase.
eu/" Chytryhttp://najlepszeta
bletkinamase.eu/</a
>

Licznik
30,996,485 unikalne wizyty