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

для защиты Windows приложений

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

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)