Техническая поддержка :

Современные решения

для защиты Windows программ

и восстановления исходного кода

Обсуждение программирования на Visual Basic в конференции ru.visual.basic


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"

Hi All,

Hадо читать из трубы данные, если они там есть, не останавливая программу
дожидаться, пока они появятся.
Возможен ли сабж - посмотреть, есть ли в ней данные?
В МСДH пишут, что overlapped operations на трубах не поддерживаются, так что и
через них реализовать не удастся.

* Origin: FidoNet Online (2:5020/175.2)


Re: Word и формы

From: "Андрущенко \(Hордлинк\)"

> 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: 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"

Hello, Dmitriy!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov" 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"

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 (2:5020/175.2)


ComPorts

#/-----/# · ···-=¬ Hello _Dmitry_ !
_*-----*_ L===============--····· · · ·

12 января 2004 22:37, _Dmitry Miloserdov_ == /Igor Krinetsky/:



DM> From: Dmitry Miloserdov

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)



Назад Содержание Вперед




Главная     Программы     Статьи     Разное     Форум     Контакты