Arsip: [Tips]

 
user image
more 14 years ago

xerion

Hello semua, saya ingin bagi tips nich. Ini adalah fungsi untuk membuka regedit dan menunjukkan kunci registry yang ingin ditampilkan. Kode berikut saya port dari C ke delphi. asalnya dari salah satu software sysinternals.com yang open-source. namanya regjump.cpp. inilah dia ...

function RegEditJump(path : string):boolean;
var hprocess : THandle;
    hRegedit : HWND;
    hRegeditTree : HWND;
    SExecInfo : TShellExecuteInfo;
    i,RegPID : integer;
begin
 result := false;
 hRegedit := FindWindow('RegEdit_RegEdit',nil);
 if hRegedit = 0 then
 begin
  FillChar(SExecInfo, SizeOf(SExecInfo), 0);
  SExecInfo.cbSize := sizeof(SExecInfo);
	SExecInfo.fMask	:= SEE_MASK_NOCLOSEPROCESS;
  SExecInfo.lpVerb	:= pchar('open');
	SExecInfo.lpFile	:= pchar('regedit.exe');
	SExecInfo.nShow	:= SW_SHOWNORMAL;
	ShellExecuteEx(@SExecInfo);
	WaitForInputIdle(SExecInfo.hProcess, INFINITE );
 end;
 hRegedit := FindWindow('RegEdit_RegEdit', nil );
 if hRegedit = 0 then
 begin
  showmessage('Error while trying to execute Windows Registry Editor !');
  TerminateProcess(SExecInfo.hProcess,0);
 end else
 begin
  ShowWindow( hRegedit, SW_SHOW );
	SetForegroundWindow( hRegedit );
  hRegeditTree := FindWindowEx( hRegedit, 0, 'SysTreeView32', nil);
	SetForegroundWindow( hRegeditTree );
	Windows.SetFocus( hRegeditTree );
	GetWindowThreadProcessId( hRegedit, @RegPID );
	hProcess := OpenProcess( PROCESS_ALL_ACCESS, false, RegPID );
  for i := 0 to 30 do SendMessage( hRegeditTree ,WM_KEYDOWN,VK_LEFT,0);
  sendmessage( hRegeditTree ,WM_KEYDOWN,VK_RIGHT,0);
	WaitForInputIdle( hProcess, INFINITE );
  path := uppercase(path);
  for i := 1 to length(path) do
  begin
   if path[i] = '' then
   begin
    sendmessage( hRegeditTree ,WM_KEYDOWN,VK_RIGHT,0);
    WaitForInputIdle( hProcess, INFINITE );
   end else
   begin
    sendmessage( hRegeditTree ,WM_CHAR,ord(path[i]),0);
   end;
  end;
	SetForegroundWindow(hRegedit);
	windows.SetFocus( hRegedit );
	CloseHandle( hProcess );
  result := true;
 end;
end;
cara pakenya RegEditJump('HKEY_CURRENT_USER\Software\Borland'); semoga berguna bagi yang lain yang ingin membuat aplikasi yang berhubungan dengan registry dengan delphi. bye
user image
more 14 years ago

cyber_hecker

nice tips. di tunggu neh tip-tip berikutnya. kekekekek :P
user image
more 14 years ago

LuriDarmawan

dipersilahkan dimasukkan ke artikel, onSubmitArticle http://pascal-id.org/dpr/Submit_News.pas kalo ditaruh di forum, setelah beberapa lama forum di prunning, bisa katut ilang tuh.
user image
more 14 years ago

xerion

ternyata lebih mudah porting c ke pascal daripada dari vb ...
user image
more 14 years ago

xerion

berikut adalah fungsi buat mencari nomor apa genap ganjil. mungkin sudah ada yg posting. supaya jika ada yg cari akan lebih mudah function isGenap(I:integer):boolean; var t : integer; begin t := I div 2; if s = t*2 then result := true else result := false; end; Happy coding !!
user image
more 14 years ago

_lmz

@xerion: berikut adalah fungsi buat mencari nomor apa genap ganjil. mungkin sudah ada yg posting. supaya jika ada yg cari akan lebih mudah function isGenap(I:integer):boolean; var t : integer; begin t := I div 2; if s = t*2 then result := true else result := false; end; Happy coding !!
ini variabel s dari mana ya... kenapa juga mesti dibagi terus dikali. kan bisa ((i mod 2) = 0). atau mungkin main-main dengan LSBnya... btw. dengan if ((i mod 2) = 0) then ... code yang dihasilkan compiler delphi kelihatannya tidak menggunakan instruksi pembagian sama sekali... kelihatannya ini ada kasus khususnya...
user image
more 14 years ago

deLogic

@lmz: btw. dengan if ((i mod 2) = 0) then ... code yang dihasilkan compiler delphi kelihatannya tidak menggunakan instruksi pembagian sama sekali... kelihatannya ini ada kasus khususnya...
kalo pembagian bilangan integer dengan 2, saya rasa compiler menggunakan teknik optimasi dengan shift register right, SHR, karena operasi ini lebih cepat (clock cycle nya di processor lebih singkat). begitu pula dengan perkalian integer dengan 2, akan lebih efisien dengan shift register left (SHL). Dan SHR dan SHL dapat digunakan untuk pembagian dan perkalian bilangan berpangkat 2, misalnya 2, 4, 8, 16, 32 dan seterusnya. CMIIW.
user image
more 14 years ago

deLogic

@xerion: function isGenap(I:integer):boolean; var t : integer; begin t := I div 2; if s = t*2 then result := true else result := false; end;
lho.. iya seperti kata rekan lmz.. variabel s itu untuk apa ya...?? terus mungkin lebih enakan pake operator mod kali ya.. :) Dan tahukah, Anda, bahwa di unit system sudah disediakan fungsi untuk memeriksa bilangan Ganjil, yaitu ODD, yang akan memberikan nilai True jika bilangan bernilai ganjil dan false jika genap.. jadi..

function isGenap(I:integer):boolean;
begin
 Result := not Odd(I);
end;
user image
more 14 years ago

kaka-delphi

Ada baiknya tips bro _lmz dan deLogic di masukkan di http://pascal-id.org/dpr/Submit_News.pas Kekekekkkk .... :lol:
user image
more 14 years ago

deLogic

Silahkan rekan-rekan meng-kompilasi nya menjadi artikel... :)
more ...
  • Pages:
  • 1
  • 2
Share to
Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com