Показать полную графическую версию : как бы по простому вывести картинку поверх всего изображения на монике ?
В общем сделал батник который отключает и включает 3g модем , теперь хочется сделать что б картинка при этом вылезала ,как при отключении штатного блютуфа и вайфай . Может кто знает простой способ (vbs,js или консольную прогу) для этого. С делфи и С конечно не буду из-за этого разбираться.
Delirium
29-12-2008, 03:57
как при отключении штатного блютуфа и вайфай »
Имеется в виду картинка, которая в трее показывается или что именно? Если да, то можно через WMI проверять состояния сетевой карты. Опишите подробней, что необходимо, глядишь и нарисую :)
Судя по всему, mitiya надо, чтобы вылазила всплывающяя подсказка из трея. Такая:
http://www.fryazino.net/images/net_vpn/step15.gif
http://xmages.net/out.php/i74623_00001.jpg
вот такая картинка вылизает когда я включаю вайфай.
Это Еее 901 . Смысл в том что я туда внутрь впоял 3г модем , теперь он вроде как встроенное устройство , на свободную горячую клавишу я прицепил батник который с помощью USBDeview включает и выключает этот модем , дак вот охота сделать чтоб еще и картинка типа этой вылезала.
Вот такой тестик набросал (сохрани под именем test.hta и тыкни мышкой)
<HTA:APPLICATION ID="hta"
APPLICATIONNAME="myApp"
BORDER="none"
CAPTION="no"
BORDERSTYLE="raised"
INNERBORDER="no"
SCROLL="no"/>
<SCRIPT LANGUAGE="JavaScript">
<!-- // Activate cloak
resizeTo(100,50);
moveTo((screen.width-100)/2,(screen.height-50)/2);
hta.windowState="normal";
setInterval("close()", 1000);
// Deactivate cloak -->
</SCRIPT>
<BODY BGCOLOR="Aqua">
Enabled
</BODY>
достоинства:
1. просто и прозрачно
недостатки:
1. не поверх всех
2. в таскбаре появляется заголовок
3. мелькает один раз при старте
4. не стильно
вариант2: запустить с консоли mplay32 /close /play enabled.avi, где авишка - придуманная тобой какая-нить анимация.
достоинства:
1. просто и прозрачно
2. стильно (таких выкрутасов можешь в авишку загнать!)
недостатки:
1. не поверх экрана
2. появляется в случайном месте
Можно ещё написать програмку в виде экзешника, который создаёт окно поверх всех, рисует в нём что нужно и закрывается (20 строчек кода)
достоиства:
1. выполнит всё как захочешь
недостатки:
1. непросто и непрозрачно
pva, если бы кто-нибудь написал програмулину которая работала из консоли следующим образом (show.exe d:\img.bmp) , был бы премного благодарен ;-)
файл с пробелами указывается в кавычках
#define UNICODE
#include <windows.h>
#pragma hdrstop
//---------------------------------------------------------------------------
struct loader_t
{
wchar_t** argv;
int argc;
HWND hwnd;
loader_t() : argv(), argc(), hwnd()
{
argv = CommandLineToArgvW(GetCommandLine(), &argc);
}
bool createWindow(HINSTANCE hinst, unsigned timeout)
{
if (1<argc)
{
HWND hwnd = CreateWindowEx(WS_EX_TOPMOST, L"STATIC", 0,
WS_POPUP|WS_BORDER|SS_BITMAP, 0, 0, 0, 0, 0, 0, hinst, 0);
SendMessage(hwnd, STM_SETIMAGE, IMAGE_BITMAP, reinterpret_cast<long>(
LoadImage(0, argv[1], IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE)));
RECT rect;
return GetWindowRect(hwnd, &rect) &&
SetWindowPos(hwnd, HWND_TOPMOST, (GetSystemMetrics(SM_CXSCREEN)-rect.right)>>1,
(GetSystemMetrics(SM_CYSCREEN)-rect.bottom)>>1, 0, 0, SWP_NOSIZE|SWP_SHOWWINDOW) &&
UpdateWindow(hwnd) &&
SetTimer(hwnd, 111, timeout, 0);
}
return false;
}
~loader_t()
{
GlobalFree(argv);
}
};
#pragma argsused
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPSTR /*lpCmdLine*/, int /*nCmdShow*/)
{
if (loader_t().createWindow(hInstance, 2000))
{
MSG cmsg;
while (GetMessage(&cmsg, 0, 0, 0)==1 &&
cmsg.message!=WM_TIMER && cmsg.wParam!=111)
{
DispatchMessage(&cmsg);
}
return 1;
}
return 0;
}
//---------------------------------------------------------------------------
возвращает 1 если окно показывалось, 0 - если нет. Нельзя приделывать к нему манифест чтоб подключались ComCtl 6.0 - не будет работать.
еслиб еще в панели задач не появлялось ничего :blush2:
Извиняюсь, при отладке загляделся и не заметил. Исправленный вариант:
#define UNICODE
#include <windows.h>
#pragma hdrstop
//---------------------------------------------------------------------------
struct loader_t
{
wchar_t** argv;
int argc;
HWND hwnd;
loader_t() : argv(), argc(), hwnd()
{
argv = CommandLineToArgvW(GetCommandLine(), &argc);
}
bool createWindow(HINSTANCE hinst, unsigned timeout)
{
if (1<argc)
{
HWND hwnd = CreateWindowEx(WS_EX_TOPMOST, L"STATIC", 0,
WS_POPUP|WS_BORDER|SS_BITMAP, 0, 0, 0, 0,
CreateWindowEx(0, L"STATIC", 0, 0, 0, 0, 0, 0, 0, 0, hinst, 0),
0, hinst, 0);
SendMessage(hwnd, STM_SETIMAGE, IMAGE_BITMAP, reinterpret_cast<long>(
LoadImage(0, argv[1], IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE)));
RECT rect;
return GetWindowRect(hwnd, &rect) &&
SetWindowPos(hwnd, HWND_TOPMOST, (GetSystemMetrics(SM_CXSCREEN)-rect.right)>>1,
(GetSystemMetrics(SM_CYSCREEN)-rect.bottom)>>1, 0, 0, SWP_NOSIZE|SWP_SHOWWINDOW) &&
UpdateWindow(hwnd) &&
SetTimer(hwnd, 111, timeout, 0);
}
return false;
}
~loader_t()
{
GlobalFree(argv);
}
};
#pragma argsused
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPSTR /*lpCmdLine*/, int /*nCmdShow*/)
{
if (loader_t().createWindow(hInstance, 2000))
{
MSG cmsg;
while (GetMessage(&cmsg, 0, 0, 0)==1 &&
cmsg.message!=WM_TIMER && cmsg.wParam!=111)
{
DispatchMessage(&cmsg);
}
return 1;
}
return 0;
}
//---------------------------------------------------------------------------
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.