|
Какой рейтинг вас больше интересует?
|
Главная /
Каталог блоговCтраница блогера Справочник по C#/Записи в блоге |
![]() |
|
Сворачиваем консольное приложение в область уведомлений(трей)
2012-10-24 15:15:32 (читать в оригинале)

[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 (читать в оригинале)

Для работы нам понадобится подключить пространство имен:
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' );
Категория «Фотографы»
Взлеты Топ 5
|
| ||
|
+192 |
206 |
МАЛЕНЬКАЯ_ПОНИ |
|
+153 |
213 |
Little Showroom |
|
+153 |
207 |
Velimira |
|
+152 |
209 |
Свадебный фотограф Петербург, Тайланд, Куба, острова |
|
+149 |
208 |
ROMAHA.SU |
Падения Топ 5
|
| ||
|
-1 |
74 |
Фотоблог на ТеМу... |
|
-1 |
25 |
White trash beautiful. |
|
-1 |
5 |
Blue_cat |
|
-1 |
18 |
Журнал Интервальщика |
|
-2 |
28 |
MODRA_NEST |
Популярные за сутки
Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.

