Arsip: Mencegah Windows Key ...

 
user image
more 18 years ago

xerion

Hello, saya sedang butuh bantuan. Saya sedang membuat program GUI Full-Screen di Windows XP dan Form always on top. Kalau yang di Win9x saya sudah tahu dengan SystemParameterInfo() maka semua system keys tidak akan aktif. Saya sudah bisa men-disable Alt+Tab. Walaupun form style sudah always on top tapi user masih bisa menggunakan windows key atau dengan kombinasi lainnya ( Win + D ) sehingga program-nya yang tertutup menu start. Saya tidak ingin menggunakan komponen DWinlock.Ada kah metode supaya enable/disable Windows Key. Satu lagi adakah cara supaya text dalam TEdit menjadi center tanpa membuat subclass baru ? Mohon pencerahannya ...
user image
more 18 years ago

kaka-delphi

Coba kesini : Win Key dan Demonya
user image
more 18 years ago

xerion

Apa ada cara lain selain hook sebab hook menggunakan file external juga khan (DLL) ...
user image
more 18 years ago

_lmz

Apa ada cara lain selain hook sebab hook menggunakan file external juga khan (DLL) ...
Hmm, bikin alat yang nyambung antara keyboard dan port keyboard di PC. Alat ini dapat dikontrol lewat serial line sehingga dapat memblokir kode-kode tertentu... Proyek yang menarik kalau anda bisa buatnya :)... Tidak perlu repot-repot pakai software lagi kan :) Apabila keberatan anda tentang "file external" adalah karena itu "satu lagi file untuk dicopy", maka ide saya ya masukkan saja DLL itu dalam EXE anda sebagai resource, lalu pada saat runtime dituliskan ke direktori sementara lalu dibuka dengan LoadLibrary(). Dengan ini kan tidak ada file tambahan (yang kelihatan). Kalau keberatan anda dikarenakan sebab lain, ya saya mohon maaf tidak bisa membantu :(
user image
more 18 years ago

kaka-delphi

OOT :
@_lmz: Hmm, bikin alat yang nyambung antara keyboard dan port keyboard di PC. Alat ini dapat dikontrol lewat serial line sehingga dapat memblokir kode-kode tertentu... Proyek yang menarik kalau anda bisa buatnya Smile... Tidak perlu repot-repot pakai software lagi kan Smile
Wakakakakakakakak ..... seep mas wil ...
@_lmz: Kalau keberatan anda dikarenakan sebab lain, ya saya mohon maaf tidak bisa membantu Sad
hihihiihi .... segitunya ... :lol:
user image
more 18 years ago

_lmz

Oh ya mungkin ada cara satu lagi yaitu dengan pindah desktop (SwitchDesktop()) kelihatannya cocok sih, full screen, eksklusif, desktop sendiri :). Berikut contoh program untuk menjalankan notepad di desktop lain. Kalau dengan Win+D sih nggak tertutup... Yang tertutup cuma semua window di desktop default.

procedure TForm1.Button1Click(Sender: TObject);
var
  desktopHandle : HDESK;
  currentDesktopHandle : HDESK;
  processStartupInfo : STARTUPINFO;
  desktopName : string;
  processInfo : PROCESS_INFORMATION;
begin
  desktopName := 'MyDesktop';
  desktopHandle := CreateDesktop(PAnsiChar(desktopName), nil, nil, 0, GENERIC_ALL, nil);
  currentDesktopHandle := GetThreadDesktop(0);

  ZeroMemory(@processStartupInfo, sizeof(processStartupInfo));
  processStartupInfo.cb := sizeof(processStartupInfo);
  processStartupInfo.lpDesktop := PAnsiChar(desktopName);
  CreateProcess('C:\WINNT\NOTEPAD.EXE', nil, nil, nil, false, 0, nil, nil, processStartupInfo, processInfo);
  CloseHandle(processInfo.hThread);
  SwitchDesktop(desktopHandle);
  // tunggu sematinya proses atau max 1 menit
  if WaitForSingleObject(processInfo.hProcess, 60000) = WAIT_TIMEOUT then begin
    // apakah handlenya perlu difree kalau processnya aku terminate???
    TerminateProcess(processInfo.hProcess, 0);
    CloseHandle(processInfo.hProcess);
  end;
  // kembali
  SwitchDesktop(currentDesktopHandle);
  CloseDesktop(desktopHandle);
end;
Tidak ada error checking, hanya contoh belaka, dll... Kenapa kok notepad (program lain) dan bukan programku sendiri? well... sebenarnya bisa sih pakai SetThreadDesktop() tapi katanya begini:
This function will fail if the calling thread has any windows or hooks on its current desktop (unless hDesktop is a handle to the current desktop).
Mungkin bisa ditaruh dalam .DPR nya tapi saya tidak tahu (dan malas mencoba) apakah VCL sudah menaruh window dulu di desktop default pada saat itu. Perlu diingat juga apabila program anda crash dan belum sempat mengembalikan desktop ke desktop default maka satu-satunya jalan adalah dengan melakukan Ctrl-Alt-Del dan logout dari menunya (ini Windows 2000). Kalau windows XP cuma mengeluarkan task manager di desktop default (belum dicek) ya nasib...
user image
more 18 years ago

belva

@xerion: Hello, saya sedang butuh bantuan. Saya sedang membuat program GUI Full-Screen di Windows XP dan Form always on top. Kalau yang di Win9x saya sudah tahu dengan SystemParameterInfo() maka semua system keys tidak akan aktif. Saya sudah bisa men-disable Alt+Tab. Walaupun form style sudah always on top tapi user masih bisa menggunakan windows key atau dengan kombinasi lainnya ( Win + D ) sehingga program-nya yang tertutup menu start. Saya tidak ingin menggunakan komponen DWinlock.Ada kah metode supaya enable/disable Windows Key. Satu lagi adakah cara supaya text dalam TEdit menjadi center tanpa membuat subclass baru ? Mohon pencerahannya ...
:D mungkin ini bisa membantu. procedure TEdit.CreateParams(var Params: TCreateParams); const Alignments: array[Boolean, TAlignment] of DWORD = ((ES_LEFT, ES_RIGHT, ES_CENTER),(ES_RIGHT, ES_LEFT, ES_CENTER)); begin inherited CreateParams(Params); with Params do Style := Style or Alignments[UseRightToLeftAlignment, FAlignment]; end;
user image
more 18 years ago

xerion

terima kasih atas pencerahannya. akan saya coba dulu dirumah. bye...
more ...
  • Pages:
  • 1
Share to

AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now: https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com