Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8

Модерирует : KLASS, IFkO

vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
@echo off
setlocal
set builder=%systemroot%\microsoft.net\framework\v2.0.50727\csc.exe
if exist %builder% goto:generate_source
echo Operation terminate.
goto:eof
:generate_source
set source=%~dp0source.cs
1>%source% (
echo using System;
echo using System.Diagnostics;
echo using System.Windows.Forms;
echo using System.Runtime.InteropServices;
echo.
echo class WinKeyBlocker
echo {
echo    private const int WH_KEYBOARD_LL = 13;
echo    private const int WM_KEYDOWN = 0x0100;
echo    private static LowLevelKeyboardProc _proc = HookCallback;
echo    private static IntPtr _hookID = IntPtr.Zero;
echo.
echo    public static void Main^(^)
echo    {
echo        _hookID = SetHook^(_proc^);
echo        Application.Run^(^);
echo        UnhookWindowsHookEx^(_hookID^);
echo    }
echo.
echo    private static IntPtr SetHook^(LowLevelKeyboardProc proc^)
echo    {
echo        using ^(Process curProcess = Process.GetCurrentProcess^(^)^)
echo        using ^(ProcessModule curModule = curProcess.MainModule^)
echo        {
echo           return SetWindowsHookEx^(WH_KEYBOARD_LL, proc, GetModuleHandle^(curModule.ModuleName^), 0^);
echo        }
echo    }
echo.
echo   private delegate IntPtr LowLevelKeyboardProc^(int nCode, IntPtr wParam, IntPtr lParam^);
echo.
echo   private static IntPtr HookCallback^(int nCode, IntPtr wParam, IntPtr lParam^)
echo   {
echo      if ^(^(nCode ^>= 0^) ^&^& ^(wParam ^== ^(IntPtr^)WM_KEYDOWN^)^)
echo      {
echo         int vkCode = Marshal.ReadInt32^(lParam^);
echo         if ^(^(^(Keys^)vkCode ^== Keys.LWin^)^|^|^(^(Keys^)vkCode ^== Keys.RWin^)^)
echo         {
echo            return ^(IntPtr^)1;
echo         }
echo      }
echo      return CallNextHookEx^(_hookID, nCode, wParam, lParam^);
echo   }
echo.
echo   [DllImport^("user32.dll", CharSet = CharSet.Auto, SetLastError = true^)]
echo   private static extern IntPtr SetWindowsHookEx^(int idHook, LowLevelKeyboardProc lpfn,
echo                                                          IntPtr hMod, uint dwThreadId^);
echo.
echo   [DllImport^("user32.dll", CharSet = CharSet.Auto, SetLastError = true^)]
echo   private static extern bool UnhookWindowsHookEx^(IntPtr hhk^);
echo.
echo   [DllImport^("user32.dll", CharSet = CharSet.Auto, SetLastError = true^)]
echo   private static extern IntPtr CallNextHookEx^(IntPtr hhk, int nCode,  
echo                                                          IntPtr wParam, IntPtr lParam^);
echo.
echo   [DllImport^("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true^)]
echo   private static extern IntPtr GetModuleHandle^(string lpModuleName^);
echo }
)
%builder% /nologo /t:exe /out:%~dp0WinKey.exe %~dp0source.cs
del /f /q %~dp0source.cs
start /b %~dp0WinKey.exe
goto:eof
endlocal
exit /b

Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 19:31 03-07-2010 | Исправлено: ComradG, 19:35 03-07-2010
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8
vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru