ورود

View Full Version : کنترل کیبرد موس و مانیتور



diplomat
چهارشنبه 01 خرداد 1387, 08:59 صبح
با سلام خدمت دوستان عزیز برنامه نویس

آیا میشه با کد نویسی در دلفی موس و کیبرد را از کار انداخت و یا مانیتور را خاموش کرد ؟

Help Please

Valadi
چهارشنبه 01 خرداد 1387, 09:23 صبح
شما برای از کار انداختن کیبورد یکی از راه ها استفاده از Hook است
برای خاموش کردن مانیتور هم کدش در سایت هست سرچ کن

diplomat
چهارشنبه 01 خرداد 1387, 09:49 صبح
لطفا بفرمایید روش استفاده از Hook به چه شکله و چی رو باید جستجو کنم ؟

diplomat
چهارشنبه 01 خرداد 1387, 10:09 صبح
آیا میشه مانیتور جوری خاموش بشه که دیگه نشه اونو روشن کرد و فقط برنامه دوباره اونو روشن کنه

در ضمن جستجو کردم چیزی پیدا نکردم

tefos666
چهارشنبه 01 خرداد 1387, 11:08 صبح
دوست عزیز جواب سوال شما :

خاموش و روشن کردن مانیتور برای عمل بلعکس مقدار 2 رو به صفر تغییر بده

SendMessage(Application.Handle,WM_SYSCOMMAND,SC_MO NITORPOWER,2);

خاموش کردن سیستم

ExitWindowsEx(EWX_SHUTDOWN, 0)

یا

(ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0));


ریستارت کردن سیستم

ExitWindowsEx(EWX_REBOOT, 0)

یا

(ExitWindowsEx(EWX_REBOOT or EWX_FORCE, 0));

log off کردن سیستم

ExitWindowsEx(EWX_LOGOFF, 0)

یا

(ExitWindowsEx(EWX_LOGOFF or EWX_FORCE, 0));

رفتن به حالت اسکرین سیور

DefWindowProc(Form1.Handle,WM_SYSCOMMAND,SC_SCREEN SAVE,0);


باز و بسته کردن درب CD-rom


Uses MMSystem;

برای کلید Open خط زیر را بنویسید:


mciSendString('Set cdaudio door open wait',nil,0,handle);

و برای کلید Close هم خط زیر را بنویسید:


mciSendString('Set cdaudio door Closed wait',nil,0,handle);

مخفی کردن استارت باتن


procedure TForm1.HideStartButton(AVisible: Boolean);
var
Tray,Child,StartButtonHandle: HWnd;
C: array[0..127] of Char;
S: string;
begin
Tray:=FindWindow('Shell_TrayWnd',nil);
Child:=GetWindow(Tray,GW_CHILD);
while Child<>0 do
begin
if GetClassName(Child,C,SizeOf(C))>0 then
begin
S:=StrPas(C);
if UpperCase(S)='BUTTON' then
begin
StartButtonHandle:=Child;
if AVisible then ShowWindow(Child,1)
else ShowWindow(Child,0);
end;
end;
Child:=GetWindow(Child,GW_HWNDNEXT);
end;
end;

از کار انداختن Alt+F4 در برنامه
CV:BOOLEAN;

در رويداد ON CLOSE QUERY اين گونه بنويسيد

CANCLOSE:=CV;

و در رويداد ONSHOW فر م اينگونه بنويسيد

CV:=FALSE;

حال تا زماني كه اين متغيير FALSE باشد فرم بسته نميشود بنابراين در كليدي كه براي خروج تعريف مينماييد بايد اينگونه عمل كنيد

CV:=TRUE;

FORM.CLOSE;


:بامزه: راستشو بگو نمیخوای که ویروس بنویسی !!!

در هر حال امیدوارم به دردت خورده باشه - یا علی مدد

success is doing , not wishing !!!

tefos666
چهارشنبه 01 خرداد 1387, 11:13 صبح
راستی اینو یادم رفت بنویسم ببخشید

این تابع موس و کیبورد رو برای N ثانیه از کار میندازه


function FunctionDetect (LibName, FuncName: String; var LibPointer: Pointer): boolean;
var LibHandle: tHandle;
begin
Result := false;
LibPointer := NIL;
if LoadLibrary(PChar(LibName)) = 0 then exit;
LibHandle := GetModuleHandle(PChar(LibName));
if LibHandle <> 0 then
begin
LibPointer := GetProcAddress(LibHandle, PChar(FuncName));
if LibPointer <> NIL then Result := true;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var xBlockInput : function (Block: BOOL): BOOL; stdcall;
begin
if FunctionDetect ('USER32.DLL', 'BlockInput', @xBlockInput) then
begin
xBlockInput (True); // Disable Keyboard & mouse
Sleep(10000); // Wait for for 10 Secounds
xBlockInput (False); // Enable Keyboard & mouse
end;
end;


این جور توابع تو دلفی زیاد هستش اگه بازم خواستی بگو :عصبانی++:

یا علی مدد - success is doing , not wishing !!!