powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Блокировать клаву и мыш.
3 сообщений из 3, страница 1 из 1
Блокировать клаву и мыш.
    #32347240
cmeptb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток.

Написал я клиента для компьютерного клуба.
Все работает прекрасно но вот только не нашел способа блокировать комп а именно клавиатуру и мыш.
Функция BlockInput(ABlockInput: boolean);stdcall;
Не дает нужного результата так как блокировка пропадает после нажатия CTRL+ALT+DEL можетесть способ блокировать клав и мыш на уровне драйвера?
Скажем просто выгружать(как?) а потом снова загружать(как?).
Клиенты в виде демона для 9x - XP.

Спасибо!!
...
Рейтинг: 0 / 0
Блокировать клаву и мыш.
    #32347256
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
CTRL+ALT+DEL должно посылать системе какое-нить сообщение. Лови его (hook повесь) и обрабатывай.




eNose
...
Рейтинг: 0 / 0
Блокировать клаву и мыш.
    #32347320
SiDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, может поможет
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
 /*++

Copyright (c) 1993  Microsoft Corporation

Module Name:

    Instdrv.c

Abstract:

    A simple Win32 app that installs a device driver

Environment:

    user mode only

Notes:

    See readme.txt

Revision History:

    06-25-93 : created
--*/ 



#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>



BOOL
InstallDriver(
    IN SC_HANDLE  SchSCManager,
    IN LPCTSTR    DriverName,
    IN LPCTSTR    ServiceExe
    );

BOOL
RemoveDriver(
    IN SC_HANDLE  SchSCManager,
    IN LPCTSTR    DriverName
    );

BOOL
StartDriver(
    IN SC_HANDLE  SchSCManager,
    IN LPCTSTR    DriverName
    );

BOOL
StopDriver(
    IN SC_HANDLE  SchSCManager,
    IN LPCTSTR    DriverName
    );

BOOL
OpenDevice(
    IN LPCTSTR    DriverName
    );



VOID
__cdecl
main(
    IN int   argc,
    IN char *argv[]
    )
 /*++

Routine Description:

Arguments:

Return Value:

--*/ 
{
    SC_HANDLE   schSCManager;

    if (argc !=  3 )
    {
        char currentDirectory[ 128 ];

        printf ( "usage: instdrv <driver name> <.sys location>\n" );
        printf ( "           to install a kernel-mode device driver, or:\n" );
        printf ( "       instdrv <driver name> remove\n" );
        printf ( "           to remove a kernel-mode device driver\n\n" );

        GetCurrentDirectory ( 128 ,
                             currentDirectory
                             );

        printf ( "       Example: instdrv simpldrv %s\\obj\\i386\\simpldrv.sys\n" ,
                currentDirectory
                );

        exit ( 1 );
    }

    schSCManager = OpenSCManager (NULL,                 // machine (NULL == local)
                                  NULL,                 // database (NULL == default)
                                  SC_MANAGER_ALL_ACCESS // access required
                                  );

    if (!_stricmp (argv[ 2 ],
                   "remove" 
                  ))
    {
        StopDriver (schSCManager,
                    argv[ 1 ]
                    );

        RemoveDriver (schSCManager,
                      argv[ 1 ]
                      );
    }
    else
    {
        InstallDriver (schSCManager,
                       argv[ 1 ],
                       argv[ 2 ]
                       );

        StartDriver (schSCManager,
                     argv[ 1 ]
                     );

        OpenDevice (argv[ 1 ]);

    }

    CloseServiceHandle (schSCManager);
}



BOOL
InstallDriver(
    IN SC_HANDLE  SchSCManager,
    IN LPCTSTR    DriverName,
    IN LPCTSTR    ServiceExe
    )
 /*++

Routine Description:

Arguments:

Return Value:

--*/ 
{
    SC_HANDLE  schService;
    DWORD      err;



    //
    // NOTE: This creates an entry for a standalone driver. If this
    //       is modified for use with a driver that requires a Tag,
    //       Group, and/or Dependencies, it may be necessary to
    //       query the registry for existing driver information
    //       (in order to determine a unique Tag, etc.).
    //

    schService = CreateService (SchSCManager,          // SCManager database
                                DriverName,           // name of service
                                DriverName,           // name to display
                                SERVICE_ALL_ACCESS,    // desired access
                                SERVICE_KERNEL_DRIVER, // service type
                                SERVICE_DEMAND_START,  // start type
                                SERVICE_ERROR_NORMAL,  // error control type
                                ServiceExe,            // service's binary
                                NULL,                  // no load ordering group
                                NULL,                  // no tag identifier
                                NULL,                  // no dependencies
                                NULL,                  // LocalSystem account
                                NULL                   // no password
                                );

    if (schService == NULL)
    {
        err = GetLastError();

        if (err == ERROR_SERVICE_EXISTS)
        {
            //
            // A common cause of failure (easier to read than an error code)
            //

            printf ("failure: CreateService, ERROR_SERVICE_EXISTS\n");
        }
        else
        {
            printf ("failure: CreateService (0x%02x)\n",
                    err
                    );
        }

        return FALSE;
    }
    else
    {
        printf ("CreateService SUCCESS\n");
    }

    CloseServiceHandle (schService);

    return TRUE;
}



BOOL
RemoveDriver(
    IN SC_HANDLE  SchSCManager,
    IN LPCTSTR    DriverName
    )
%af_src_comm_3
{
    SC_HANDLE  schService;
    BOOL       ret;

    schService = OpenService (SchSCManager,
                              DriverName,
                              SERVICE_ALL_ACCESS
                              );

    if (schService == NULL)
    {
        printf ("failure: OpenService (0x%02x)\n", GetLastError());
        return FALSE;
    }

    ret = DeleteService (schService);

    if (ret)
    {
        printf ("DeleteService SUCCESS\n");
    }
    else
    {
        printf ("failure: DeleteService (0x%02x)\n",
                GetLastError()
                );
    }

    CloseServiceHandle (schService);

    return ret;
}



BOOL
StartDriver(
    IN SC_HANDLE  SchSCManager,
    IN LPCTSTR    DriverName
    )
{
    SC_HANDLE  schService;
    BOOL       ret;
    DWORD      err;

    schService = OpenService (SchSCManager,
                              DriverName,
                              SERVICE_ALL_ACCESS
                              );

    if (schService == NULL)
    {
        printf ("failure: OpenService (0x%02x)\n", GetLastError());
        return FALSE;
    }

    ret = StartService (schService,    // service identifier
                        0,             // number of arguments
                        NULL           // pointer to arguments
                        );
    if (ret)
    {
        printf ("StartService SUCCESS\n");
    }
    else
    {
        err = GetLastError();

        if (err == ERROR_SERVICE_ALREADY_RUNNING)
        {
            //
            // A common cause of failure (easier to read than an error code)
            //

            printf ("failure: StartService, ERROR_SERVICE_ALREADY_RUNNING\n");
        }
        else
        {
            printf ("failure: StartService (0x%02x)\n",
                    err
                    );
        }
    }

    CloseServiceHandle (schService);

    return ret;
}



BOOL
StopDriver(
    IN SC_HANDLE  SchSCManager,
    IN LPCTSTR    DriverName
    )
{
    SC_HANDLE       schService;
    BOOL            ret;
    SERVICE_STATUS  serviceStatus;

    schService = OpenService (SchSCManager,
                              DriverName,
                              SERVICE_ALL_ACCESS
                              );

    if (schService == NULL)
    {
        printf ("failure: OpenService (0x%02x)\n", GetLastError());
        return FALSE;
    }

    ret = ControlService (schService,
                          SERVICE_CONTROL_STOP,
                          &serviceStatus
                          );
    if (ret)
    {
        printf ("ControlService SUCCESS\n");
    }
    else
    {
        printf ("failure: ControlService (0x%02x)\n",
                GetLastError()
                );
    }

    CloseServiceHandle (schService);

    return ret;
}



BOOL
OpenDevice(
    IN LPCTSTR    DriverName
    )
{
    char     completeDeviceName[64] = "";
    LPCTSTR  dosDeviceName = DriverName;
    HANDLE   hDevice;
    BOOL     ret;



    //
    // Create a \\.\XXX device name that CreateFile can use
    //
    // NOTE: We're making an assumption here that the driver
    //       has created a symbolic link using it's own name
    //       (i.e. if the driver has the name "XXX" we assume
    //       that it used IoCreateSymbolicLink to create a
    //       symbolic link "\DosDevices\XXX". Usually, there
    //       is this understanding between related apps/drivers.
    //
    //       An application might also peruse the DEVICEMAP
    //       section of the registry, or use the QueryDosDevice
    //       API to enumerate the existing symbolic links in the
    //       system.
    //

    strcat (completeDeviceName,
            "\\\\.\\"
            );

    strcat (completeDeviceName,
            dosDeviceName
            );

    hDevice = CreateFile (completeDeviceName,
                          GENERIC_READ | GENERIC_WRITE,
                          0,
                          NULL,
                          OPEN_EXISTING,
                          FILE_ATTRIBUTE_NORMAL,
                          NULL
                          );

    if (hDevice == ((HANDLE)-1))
    {
        printf ("Can't get a handle to %s\n ",
                completeDeviceName
                );

        ret = FALSE;
    }
    else
    {
        printf (" CreateFile SUCCESS\n");

        CloseHandle (hDevice);

        ret = TRUE;
    }

    return ret;
}
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Блокировать клаву и мыш.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]