Сегодня 8 января, четверг ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7281
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Справочник по C#
Справочник по C#
Голосов: 1
Адрес блога: http://www.csharpcoderr.com/
Добавлен: 2012-11-28 00:46:26
 

Сворачиваем консольное приложение в область уведомлений(трей)

2012-10-24 15:15:32 (читать в оригинале)


Данный код поможет вам реализовать сворачивание/разворачивание консольного приложения в область уведомлений, а так же выводить сообщения ShowBalloonTip.

[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

[DllImport("kernel32.dll", ExactSpelling = true)]
private static extern IntPtr GetConsoleWindow();

static void Main(string[] args)
{

    ShowWindow(GetConsoleWindow(), 0);//сворачиваем в область уведомлений

    //Указываем компонент, который создает значок в области уведомлений.
    //Этот класс не может наследоваться.
    NotifyIcon icon = new NotifyIcon();

    //задаем текущий значок.
    icon.Icon = new Icon("1.ico");//иконка расположена рядом с exe файлом

    //задаем значение, указывающее, виден ли значок в области уведомлений
    //в панеле задач.
    icon.Visible = true;   

    //задаем текст подсказки, отображаемый при наведении указателя
    //мыши на значок в области уведомлений.
    icon.Text = "Свернутое консольное приложение";

    //Отображаем всплывающую подсказку с указанным заголовком, текстом и значком
    //в панеле задач в течении заданного периода времени.
    icon.ShowBalloonTip(2000,"Скрытое консольное приложение","Скрытие выполнено успешно!",ToolTipIcon.Info);
 
 ShowWindow(GetConsoleWindow(), 1);//показываем 
 icon.Visible = true;  //убираем иконку из области уведомений 
    Console.ReadKey();    
}
Для работы вам понадобится подключить следующеие пространства имен:
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Text;
using System.Data;
using System;
using System.Drawing;


Балуемся индикаторами NumLock, CapsLock, ScrollLock на клавиатуре!

2012-10-23 12:55:33 (читать в оригинале)


Данный пример реализует последовательное загорание и затухание индикаторов NumLock, CapsLock, ScrollLock на клавиатуре. Также его можно использовать для реализации управления включения и отключения режимов NumLock, CapsLock, ScrollLock.


Для работы нам понадобится подключить пространство имен:

using System.Runtime.InteropServices;
using System.Threading;
И добавить компонент таймер со свойствами:
Enabled: True
Interval: 1000

Теперь переходим к коду:

private const byte VK_SCROLL = 0x91;
private const byte VK_NUMLOCK = 0x90;
private const byte VK_CAPITAL = 0x14;
private const uint KEYEVENTF_KEYUP = 0x2;


[DllImport("user32.dll", EntryPoint = "keybd_event", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);

[DllImport("user32.dll", EntryPoint = "GetKeyState", SetLastError = true)]
static extern short GetKeyState(uint nVirtKey);
//Scroll-------------------------------------------------------
public static void SetScrollLockKey(bool newState)
{
    bool scrollLockSet = GetKeyState(VK_SCROLL) != 0;
    if (scrollLockSet != newState)
    {
        keybd_event(VK_SCROLL, 0, 0, 0);
        keybd_event(VK_SCROLL, 0, KEYEVENTF_KEYUP, 0);
    }
}
public static bool GetScrollLockState()
{
    return GetKeyState(VK_SCROLL) != 0;
}
//NUM------------------------------------------------------- 
public static void SetNumLockKey(bool newState)
{
    bool scrollLockSet = GetKeyState(VK_NUMLOCK) != 0;
    if (scrollLockSet != newState)
    {
        keybd_event(VK_NUMLOCK, 0, 0, 0);
        keybd_event(VK_NUMLOCK, 0, KEYEVENTF_KEYUP, 0);
    }
}

public static bool GetNumLockState()
{
    return GetKeyState(VK_NUMLOCK) != 0;
}
//Caps-------------------------------------------------------
public static void SetCapsLockKey(bool newState)
{
    bool scrollLockSet = GetKeyState(VK_NUMLOCK) != 0;
    if (scrollLockSet != newState)
    {
        keybd_event(VK_CAPITAL, 0, 0, 0);
        keybd_event(VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0);
    }
}

public static bool GetCapsLockState()
{
    return GetKeyState(VK_CAPITAL) != 0;
}
Для реализации поочередного включения/выключения в таймер вставляете вот этот код:
SetNumLockKey(true);
Thread.Sleep(100);
SetNumLockKey(false);
Thread.Sleep(100);
SetCapsLockKey(true);
Thread.Sleep(100);
SetCapsLockKey(false);
Thread.Sleep(100);
SetScrollLockKey(true);
Thread.Sleep(100); 
SetScrollLockKey(false);
Thread.Sleep(100); 
Вы так же можете пользоваться этими функциями по отдельности в случае если что-то необходимо включить:
SetNumLockKey(true);
или выключить!
SetNumLockKey(false);


Определяем место запуска приложения(сеть или локальная машина)

2012-10-23 12:53:53 (читать в оригинале)


Данная функция позволяет определить откуда был произведен запуск вашего приложения, из сети или на локальном компьютере!

Для работы, необходимо подключить следующее пространство имен:
using System.IO;
Код реализации данной задачи:
public static bool IsLocal()
{
    DirectoryInfo dir = new DirectoryInfo(Application.StartupPath);
    return (from d in DriveInfo.GetDrives()
            where string.Compare(dir.Root.FullName, d.Name, StringComparison.OrdinalIgnoreCase) == 0
            select (d.DriveType != DriveType.Network)
            ).FirstOrDefault();
}
Пример использования функции:
private void button1_Click(object sender, EventArgs e)
{
    if (IsLocal() == true)
    {
        MessageBox.Show("Запущен на локальной машине");
    }
    else
    {
        MessageBox.Show("Запущен из сети");
    }
}


Блокируем все запущенные приложения кроме своего

2012-10-23 09:41:15 (читать в оригинале)





      Данная функция позволяет реализовать блокировку всех запускаемых и запущенных приложений кроме вашего, мне данный код пригодился в реализации родительского контроля!

Для работы нам необходимо подключить следующее пространство имен:

using System.Runtime.InteropServices;
Подключаем функции GetDesktopWindow,GetWindow и EnableWindow из библиотеки user32.dll.
[DllImport("user32.dll", SetLastError = false)]
static extern IntPtr GetDesktopWindow();

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr GetWindow(IntPtr hWnd, GetWindow_Cmd uCmd);

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EnableWindow(IntPtr hWnd, bool bEnable);
Объявляем необходимы нам флаги для прохода по приложениям
enum GetWindow_Cmd : uint
{
    GW_HWNDFIRST = 0,
    GW_HWNDLAST = 1,
    GW_HWNDNEXT = 2,
    GW_HWNDPREV = 3,
    GW_OWNER = 4,
    GW_CHILD = 5,
    GW_ENABLEDPOPUP = 6
}
Ну и сама функция блокировки приложений:
private void button1_Click(object sender, EventArgs e)
{
    //получаем первое дочернее окно Рабочего стола
    IntPtr hwnd = GetWindow(GetDesktopWindow(), GetWindow_Cmd.GW_CHILD);
    if (hwnd != IntPtr.Zero)
    {
        //перебираем все окна в системе
        while (hwnd != IntPtr.Zero)
        {
            //проверка, что блокируем не свое окно
            if (hwnd != this.Handle)
            {
                //блокируем окно 
                //(вид окна, как будто его блокирует диалоговое окно)           
                EnableWindow(hwnd, false);
            }
            //получаем хендл следующего окна          
            hwnd = GetWindow(hwnd, GetWindow_Cmd.GW_HWNDNEXT);
        }
    }
}
Указывая в EnableWindow(hwnd, false) true или false вы блокируете или разблокируете приложения!


Программно выполняем Ctrl+C

2012-10-23 08:51:42 (читать в оригинале)



[DllImport("user32.dll", SetLastError = true)]
private static extern void keybd_event( byte bVk, byte bScan, uint dwFlags, int dwExtraInfo );
 
private static void SendCtrlhotKey( char key ) {
  keybd_event(      0x11, 0,   0, 0);
  keybd_event( (byte)key, 0,   0, 0);
  keybd_event( (byte)key, 0, 0x2, 0);
  keybd_event(      0x11, 0, 0x2, 0);
}
Пример как использовать:
SendCtrlhotKey( 'C' );


Страницы: ... 21 22 23 24 25 26 27 28 29 30 31 32 33 34 

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по сумме баллов (758) в категории «Истории»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.