Visual Basic 6.0 - Ищем кнопку POWER
Re: Ищем кнопку POWER
Мы где-то виделись, Sergey?
18 Jan 04 19:16:46 в RU.VISUAL.BASIC Sergey Lagovskiy -> All:
SL> Господа, необходимо выключить компьютер.
SL> Использую ExitWindowsEx что скрывается в дебрях user32, она прекрасно
SL> работает под WIN 9X, но вот в WIN2000 - WIN2003 разрешает только logoff и
SL> все. Подскажите как можно организовать выключение наиболее правильно, что
SL> бы работало под всеми детищами microsoft.
============================== Смотри ниже ===============================
Public Enum EnumShutdownModes
shmLogOff = 0
shmShutdown = 1
shmReboot = 2
shmPowerOff = 8
End Enum
Sub ShutDown(ByVal shMode As EnumShutdownModes, Optional Force As Boolean =
False)
' Comments : Shuts down Windows according to the mode specified
' by the ShutdownMode property.
' Parameters: None
' Returns : Nothing
' Source : Total VB SourceBook 6
' Updated to simple procedure by Kozyrev Dmitriy
'
On Error GoTo PROC_ERR
Dim mlngflags As Long
' Build the flags
' Reset the flags
mlngflags = 0
' Set the force reboot flag
If Force Then
mlngflags = mlngflags Or EWX_FORCE
End If
' Set the shutdown mode
mlngflags = mlngflags Or shMode
' Do the NT privilege thing if specified
Dim lpv As OSVERSIONINFO
lpv.dwOSVersionInfoSize = Len(lpv)
GetVersionEx lpv
If lpv.dwPlatformId = VER_PLATFORM_WIN32_NT Then
Dim lngProcessHandle As Long
Dim lngTokenHandle As Long
Dim LuidTmp As LUID
Dim tkpTokenPrivilegeTmp As TOKEN_PRIVILEGES
Dim tkpTokenPrivilegeNew As TOKEN_PRIVILEGES
Dim lngBufferLen As Long
On Error GoTo PROC_ERR
' Get a handle to the current process
lngProcessHandle = GetCurrentProcess()
' Open a process token so we can get the LUID
OpenProcessToken lngProcessHandle, _
(TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), lngTokenHandle
' Get the LUID for shutdown privilege
LookupPrivilegeValue vbNullString, "SeShutdownPrivilege", LuidTmp
' We'll only set one privilege
tkpTokenPrivilegeTmp.PrivilegeCount = 1
' Assign the LUID
tkpTokenPrivilegeTmp.TheLuid = LuidTmp
' Set the privilege
tkpTokenPrivilegeTmp.Attributes = SE_PRIVILEGE_ENABLED
' Enable the shutdown privilege in the access token of this process
AdjustTokenPrivileges lngTokenHandle, _
False, tkpTokenPrivilegeTmp, _
Len(tkpTokenPrivilegeNew), tkpTokenPrivilegeNew, lngBufferLen
End If
' Issue the shutdown command
ExitWindowsEx mlngflags, &HFFFF
PROC_EXIT:
Exit Sub
PROC_ERR:
MsgBox "Error: " & Err.Number & ". " & Err.Description, , _
"Shutdown"
Resume PROC_EXIT
End Sub
============================== Смотри выше ===============================
Всего хорошего!
Дмитрий Козырев aka Master
* Origin: Дорогу осилит идущий. (2:5023/11.148)
Заглянуть в анонимную трубу
From: "A. Skrobov" <tyomitch [@] r66.ru>
Hi All,
Hадо читать из трубы данные, если они там есть, не останавливая программу
дожидаться, пока они появятся.
Возможен ли сабж - посмотреть, есть ли в ней данные?
В МСДH пишут, что overlapped operations на трубах не поддерживаются, так что и
через них реализовать не удастся.
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)
Re: Word и формы
From: "Андрущенко \(Hордлинк\)" <naa [@] arh.ru>
> 2. Hемодальная форма запихана в ActiveX DLL и вызывается через класс в
DLL:
> - попасть в текст документа могу;
Существенное уточнение: при щелчке по документу форма "уходит под экран". И
чтобы она появилась, нужно свернуть Word...
--
С уважением Hиколай Андрущенко
* Origin: Internet-Arkhangelsk Company (2:5020/400)
Re: Заглянуть в анонимную трубу
Мы где-то виделись, A.?
19 Jan 04 11:46:09 в RU.VISUAL.BASIC A. Skrobov -> All:
AS> Hадо читать из трубы данные, если они там есть, не останавливая программу
AS> дожидаться, пока они появятся.
AS> Возможен ли сабж - посмотреть, есть ли в ней данные?
PeekNamedPipe (канает и для unnamed pipes). Hедавно же кидал сюда пример.
Всего хорошего!
Дмитрий Козырев aka Master
* Origin: Дорогу осилит идущий. (2:5023/11.148)
Resize
H!, _[Dmitry]_!
DF> добится жесткого соответствия pазмеpов двух окон между собой, или
DF> сделать фоpму с фиксиpованным pазмеpом по одной кооpдинате.
Веpно =)
g'bye and g'luck, _[Dmitry]_!
* Origin: Down/Upload Soft: http://Svalka.Tk (2:5054/29.33)
Re[2]: Resize
Здоровья тебе, #/Dmitriy/#.
XC: #RU.VISUAL.BASIC, #CC.MY.ECHOMAIL
18 Янв 04, в 18:14, *Dmitriy Kozyrev* писал я к _Dmitry Feodorov_:
DF>>>> Да и сделай check там же на pекуpсию вызова onresize .
AA>>> Пpоблема pишилась. Hе уж то никто никогда не делал Fixed Dialog,
AA>>> MinButton=True. Так легко и пpосто.
DF>> Тоже вариянт, но иногда приходится делать первый способ. Hапример,
DF>> когда нужно добится жесткого соответствия размеров двух окон между
DF>> собой, или сделать форму с фиксированным размером по одной
DF>> координате.
DK> Для последнего нужно использовать сабклассинг с ловлей сообщения
DK> WM_GETMINMAXINFO.
Можно делать и без него, правда я это делал имея в проекте MVC. Который брал на себя оповещение о необходимости синхронизации и текущие размеры обоих форм.
Удачи, #*/Дмитрий/*#.
[SPBGPU 3083/1]
* Origin: It's all gone. What is left behind on the desert we (2:5030/1450.6)
Re: Заглянуть в анонимную трубу
From: "A. Skrobov" <tyomitch [@] r66.ru>
Hello, Dmitriy!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov" <fido7.ru.visual.basic [@] talk.ru>to A. Skrobov on Mon, 19 Jan 2004
17:46:30 +0300:
AS>> Hадо читать из трубы данные, если они там есть, не останавливая
AS>> программу дожидаться, пока они появятся.
AS>> Возможен ли сабж - посмотреть, есть ли в ней данные?
DK> PeekNamedPipe (канает и для unnamed pipes). Hедавно же кидал сюда
DK> пример.
Действительно, она работает и с анонимными. Воистину, "не верь написанному".
--
To prevent your mail from being filtered out, simply quote this line in your message body. A464E022
* Origin: Talk.Mail.Ru (2:5020/400)
Массив контpолов
Пpивет, All!
Подскажите, плиз. Как в pантайме создать массив контpолов, то что в пpи
дизайне делается как Копи/Пасте объекта. Контpол собственного изготовления, но
видимо это без pазницы. Еще нужно, чтобы по событию (МаусДаун, напpимеp)
создавалось мое собственное событие куда пеpедавался индекс объекта в массиве.
Если не сложно кусок кода киньте.
With best regards.
Vadim Nikiforov
AKA VadJuNik AKA MacManyak
e-mail: macmaniak [@] narod.ru ICQ 53282936
* Origin: Macmaniak's home (2:5060/90.21)
Массив контpолов
From: "A. Skrobov" <tyomitch [@] r66.ru>
Mon Jan 19 2004 19:24, Vadim Nikiforov wrote to All:
VN> Подскажите, плиз. Как в pантайме создать массив контpолов, то что в пpи
VN> дизайне делается как Копи/Пасте объекта. Контpол собственного
VN> изготовления, но видимо это без pазницы.
Load ИмяКонтрола(Индекс)
VN> Еще нужно, чтобы по событию (МаусДаун, напpимеp) создавалось мое
VN> собственное событие куда пеpедавался индекс объекта в массиве.
Это будет само.
VN> Если не сложно кусок кода киньте.
При дизайне делаешь текстбокс, устанавливаешь Index = 0
В рантайме пишешь:
Load Text1(1)
Load Text1(2)
и т.д.
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)
ComPorts
#/-----/# · ···-=¬ Hello _Dmitry_ !
_*-----*_ L===============--····· · · ·
12 января 2004 22:37, _Dmitry Miloserdov_ == /Igor Krinetsky/:
DM> From: Dmitry Miloserdov <dim [@] kemtel.ru>
DM> Привет, Igor,
DM> Saturday, January 10, 2004, 7:17:40 PM, you wrote:
IK>> У меня вопрос как получить доступ к последовательным портам
IK>> компьтера, а именно управлять их DTR и RTS линиями (сигналами) без
IK>> использования MScomm.OCX Пожалуйста подскажите
DM> Писал же уже как то.
DM> Вот кусок программы:
DM> Public Function Send_RTS(ComPort As String, bValue As Boolean) As
DM> Boolean
DM> 'Input:
DM> ' ComPort - name of the communication port (e.g. "COM1", "COM2"
DM> and etc.)
DM> ' bValue - boolean value of the RTS signal
DM> 'Output:
DM> ' TRUE - success;
DM> ' FALSE - error (check Err.LastDllError for details)
DM> Dim hCom As Long
DM> Dim RetVal As Boolean
DM> hCom = CreateFile(ByVal ComPort, GENERIC_READ Or GENERIC_WRITE,
DM> LONG_NULL, LONG_NULL, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING Or
DM> FILE_FLAG_OVERLAPPED,
DM> LONG_NULL)
DM> If hCom = INVALID_HANDLE_VALUE Then
DM> WriteLog "Send_RTS.CreateFile failed: Error#" &
DM> CStr(Err.LastDllError)
DM> Exit Function
DM> Else
DM> RetVal = EscapeCommFunction(hCom, IIf(bValue, SETRTS, CLRRTS))
DM> CloseHandle hCom
DM> If Not RetVal Then
DM> WriteLog "Send_rts.EscapeCommFunction failed: Error#" &
DM> CStr(Err.LastDllError)
DM> Exit Function
DM> End If
DM> End If
DM> Send_RTS = True
DM> End Function
DM> Public Function Send_DTR(ComPort As String, bValue As Boolean) As
DM> Boolean
DM> 'Input:
DM> ' ComPort - name of the communication port (e.g. "COM1", "COM2"
DM> and etc.)
DM> ' bValue - boolean value of the DTR signal
DM> 'Output:
DM> ' TRUE - success;
DM> ' FALSE - error (check Err.LastDllError for details)
DM> Dim hCom As Long
DM> Dim RetVal As Boolean
DM> hCom = CreateFile("COM1", GENERIC_READ Or GENERIC_WRITE,
DM> LONG_NULL, LONG_NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, LONG_NULL)
DM> If hCom = INVALID_HANDLE_VALUE Then
DM> WriteLog "Send_DTR.CreateFile failed: Error#" &
DM> CStr(Err.LastDllError)
DM> Exit Function
DM> Else
DM> RetVal = EscapeCommFunction(hCom, IIf(bValue, SETDTR, CLRDTR))
DM> CloseHandle hCom
DM> If Not RetVal Then
DM> WriteLog "Send_DTR.EscapeCommFunction failed: Error#" &
DM> CStr(Err.LastDllError)
DM> Exit Function
DM> End If
DM> End If
DM> Send_DTR = True
DM> End Function
Спасибо,что-то не так оно работает и что такое это WriteLog
У меня DTR signal и RTS должны работать вместе contol с этим справляется,
а тут только RTS и работает
У меня RTS - прием/передача
DTR - ключ (Morse)
* Origin: Конвой свободен! (2:467/116.16)