PDA

Показать полную графическую версию : [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 [31] 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

TERMINAL
29-05-2008, 12:35
Creat0R, Возможно ли как то узнать серийный номер жёсткого диска, CD-ROMa, материнской платы....?
Возможно ли с помощью скрипта писать диски?
Возможно ли с помощью скрипта, зная название программы, к примеру 1С, узнать на какой сетевой адрес и через какой порт она подключена?

SvetlanaK
29-05-2008, 17:45
Можно ли с пом скрипта определить момент появления флэшки в компьютере?
в хелпе отыскала $var = DriveGetDrive( "REMOVABLE" ). но как сделать именно отслеживание? проверку в реальном времени, а не появилась ли флэш...и если появилась то выдать например сообщение типа "проверьте товарисч ее на вирусы, а не тоооооооо...." можно?

Creat0R
29-05-2008, 17:59
VovaVolk,
потом надо вводить имя и пароль »
Диалог отображается куда можно вводить данные?

DENoszone, пишу сайт...а скрипт парсит его с верху до низу »
Одну страничку?

TERMINAL, Возможно ли как то узнать серийный номер жёсткого диска, CD-ROMa, материнской платы....? »
Возможно, но это не ко мне, никогда не сталкивался.

Возможно ли с помощью скрипта писать диски? »
Полагаю что тоже возможно.

Возможно ли с помощью скрипта, зная название программы, к примеру 1С, узнать на какой сетевой адрес и через какой порт она подключена? »
Опять, это не ко мне :)
Я административными задачами не занимался, за исключением мелких, которые были любопытны мне.

SvetlanaK, как сделать именно отслеживание? »
Я как то приводил пример:

#include <GuiConstants.au3>

Global $aDrives = 0

GUICreate("USB Ejector & Monitor", 300, 210)

$List = GUICtrlCreateList("", 20, 20, 260, 140)

$EjectDrive_Button = GUICtrlCreateButton("Eject Drive", 20, 170, 70, 20)
$RefreshList_Button = GUICtrlCreateButton("Refresh List", 210, 170, 70, 20)

_Check_Drives()
AdlibEnable("_Check_Drives", 1000)

GUISetState()

While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $EjectDrive_Button
$sDrive = GUICtrlRead($List)

_EjectDrive(StringLower($sDrive))
Case $RefreshList_Button
$aCheckDrives = DriveGetDrive("Removable")
_SetUSBDrivesList_Proc($List)
EndSwitch
WEnd

Func _Check_Drives()
$aCheckDrives = DriveGetDrive("Removable")

If Not _aDrivesIsIdent($aDrives, $aCheckDrives) Then
$aDrives = $aCheckDrives
_SetUSBDrivesList_Proc($List)
EndIf
EndFunc

Func _SetUSBDrivesList_Proc($iCtrlID=-1)
GUICtrlSetData($iCtrlID, "")

For $i = 1 To UBound($aDrives)-1
If Not _IsFloppyDrives($aDrives[$i]) And DriveStatus($aDrives[$i]) = "READY" Then _
GUICtrlSetData($iCtrlID, StringUpper($aDrives[$i]) & "\")
Next
EndFunc

Func _aDrivesIsIdent(ByRef $avArray1, ByRef $avArray2)
Local $iUbound1 = UBound($avArray1), $iUbound2 = UBound($avArray2)

If $iUbound1 <> $iUbound2 Then Return False

For $i = 1 To $iUbound1-1
If Not _IsFloppyDrives($avArray1[$i], $avArray2[$i]) And _
($avArray1[$i] <> $avArray2[$i] Or DriveStatus($avArray1[$i]) <> "READY" Or _
DriveStatus($avArray2[$i]) <> "READY") Then Return False
Next

Return True
EndFunc

Func _IsFloppyDrives($sDrive1, $sDrive2="")
Return StringRegExp($sDrive1, "(?i)[a-b]") Or ($sDrive2 <> "" And StringRegExp($sDrive2, "(?i)[a-b]"))
EndFunc

Func _EjectDrive($sdLetter, $sVerb="&Извлечь") ;Для английской Winndows $sVerb = "E&ject"
;Раскомментируйте эти строчки для Варианта № 1 :)
;~ Run("rundll32.exe shell32.dll,Control_RunDLL hotplug.dll", @SystemDir)
;~ Return

If $sdLetter = "" Then Return 0

Local Const $SSF_DRIVES = 17
Local $oShell, $oNameSpace, $oDrive

Local $oEvent = ObjEvent("AutoIt.Error", "Error_Handler")

Local $oShell = ObjCreate("Shell.Application")
If Not IsObj($oShell) Then Return SetError(1, 0, 0)

Local $oNamespace = $oShell.NameSpace($SSF_DRIVES)
Local $oDrive = $oNamespace.ParseName($sdLetter)

$oDrive.InvokeVerb($sVerb)
If @error Then Return 0

If DriveStatus($sdLetter) <> "READY" Then
Local $strName = DriveGetLabel($sdLetter) & " (" & StringUpper($sdLetter) & ")"
TrayTip("USB Drive " & $strName & " ejected", "You can now remove the device safely.", 5, 1)
EndIf
Endfunc

Func Error_Handler()
SetError(1)
EndFunc

Maza Faka
30-05-2008, 07:25
TERMINAL

Возможно ли как то узнать серийный номер жёсткого диска, CD-ROMa, материнской платы....?

Очень сложно, если не сказать невозможно. Эти данные можно получить из BIOS-а. Поищи в Googl-е.

Возможно ли с помощью скрипта писать диски?

Можно, для этого есть WinAPI функции.

SvetlanaK
30-05-2008, 11:00
Creat0R, большое спасибо!

NikLok
30-05-2008, 12:51
Имеем код типа GuiCtrlCreateTab($x, $y, $w, $h
GuiCtrlCreateTabItem("Tab1")
....
GuiCtrlCreateTabItem("Tab2")
...
GuiCtrlCreateTabItem("Tab3")
..
GuiCtrlCreateTabItem("Tab4")
.
GuiCtrlCreateTabItem("")

В некоторых табах имеет ListView. Выбираем в каком нибудь алимент. Переключаемся в другой таб что-то делаем, возвращаемся а выбранный алимент сброшен.
Что значит надо самому запоминать его состояние и восстанавливать при переключении на данную вкладку? Мне кажется много кода будет!
Кто нибудь подскажет имена событий связанные с переключением вкладок. А еще лучше пример обработчика.
Или я опять все привратно трактую, в силу недопонимания?!

И кстатит на что влияет заключительная контсрукция GuiCtrlCreateTabItem("").
Я сначала без неё усе написал а потом у хелпе выглядел!

Котяра
30-05-2008, 13:08
Creat0R, Возможно ли как то узнать серийный номер жёсткого диска, CD-ROMa, материнской платы....?
Возможно ли с помощью скрипта писать диски?
Возможно ли с помощью скрипта, зная название программы, к примеру 1С, узнать на какой сетевой адрес и через какой порт она подключена? »
1. Я думаю, да.
2. Я думаю, нет, запись дисков не является функцией Windows, она появилась лишь в Windows XP. Только если подключить какой-нибудь command-line прожигатель дисков.
3. Не знаю

Creat0R
30-05-2008, 13:17
NikLok,
Выбираем в каком нибудь алимент. Переключаемся в другой таб что-то делаем, возвращаемся а выбранный алимент сброшен. »
Про какой элемент речь? строка в ListView?

Кто нибудь подскажет имена событий связанные с переключением вкладок. А еще лучше пример обработчика. »
Что именно требуется? проверить переключение вкладки?

#include <GuiConstants.au3>

$GUI = GUICreate("Test Script", 300, 200)

$Main_Tab = GUICtrlCreateTab(20, 10, 260, 140)

$TabItem1 = GUICtrlCreateTabItem("Tab 1")
$TabItem2 = GUICtrlCreateTabItem("Tab 2")

GUISetState(@SW_SHOW, $GUI)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Main_Tab
Switch GUICtrlRead($Main_Tab)
Case 0
MsgBox(0, "", "Переключение на Tab 1")
Case 1
MsgBox(0, "", "Переключение на Tab 2")
EndSwitch
EndSwitch
WEnd

на что влияет заключительная контсрукция GuiCtrlCreateTabItem(""). »
На закрытие табов, чтобы создаваемые далее контроли не попадали под последний созданный таб.

NikLok
30-05-2008, 13:59
Про какой элемент речь? строка в ListView? »
Именно, именно!

В принципе на все ответил. Только момент не совсем ясен:
Case 0 MsgBox(0, "", "Переключение на Tab 1") Case 1 MsgBox(0, "", "Переключение на Tab 2") »
Я так понимаю 0 и 1 это внутренние ( скрытые внутрях) идентификаторы табов в соотв с порядком их создания?
Наверное вместо них так же можно использовать $TabItem1 и $TabItem2 ?

А что с сохранением позций listview в табах?

Creat0R
30-05-2008, 14:18
NikLok, Я так понимаю 0 и 1 это внутренние ( скрытые внутрях) идентификаторы табов в соотв с порядком их создания? »
Да, 0 первый таб, 1 (в этом случае) последний.

Наверное вместо них так же можно использовать $TabItem1 и $TabItem2 ? »
Нет, это идентификаторы контроля, а нам нужно проверять свойства текущего Tab'а.

что с сохранением позций listview в табах? »
У меня работает:

#include <GuiConstants.au3>

$GUI = GUICreate("Test Script", 300, 200)

$Main_Tab = GUICtrlCreateTab(20, 10, 260, 140)

$TabItem1 = GUICtrlCreateTabItem("Tab 1")

$ListView = GUICtrlCreateListView("Column", 40, 40, 220, 100)
GUICtrlCreateListViewItem("Item", $ListView)

$TabItem2 = GUICtrlCreateTabItem("Tab 2")

GUISetState(@SW_SHOW, $GUI)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd

Приведи пример что конкретно имеется в виду.

NikLok
30-05-2008, 14:29
Creat0R, Спасибо! Я пока поразбираюсь сам в своих выкрутасах. Наверное что-то напутал! Если что спрошу исчо.

DENoszone
31-05-2008, 08:17
срочно
есть ссылка
http://odnoklassniki.km.ru/my/mail/message.asp?iduser=1200000
ещё надо генерировать в цикле (след ссылка http://odnoklassniki.km.ru/my/mail/message.asp?iduser=1200001 +1 )
в поле сообщения ввести определеный текст.
зараанее спасибо..думю это просто?

Maza Faka
31-05-2008, 14:28
amel27
Посмотри, если будет время:
#include <WindowsConstants.au3>
#include <ToolTipConstants.au3>

Global Const $CW_USEDEFAULT = 0x80000000
Global Const $TOOLTIPS_CLASSA = "tooltips_class32"

Global $hToolTip

$hGUI = GUICreate("Test GUI", 300, 200)

$hToolTip = DllCall("user32.dll", "hwnd", "CreateWindowEx", "int", $WS_EX_TOPMOST, "str", $TOOLTIPS_CLASSA, _
"str", 0, "int", BitOR($WS_POPUP, $TTS_ALWAYSTIP), "int", $CW_USEDEFAULT, _
"int", $CW_USEDEFAULT, "int", $CW_USEDEFAULT, "int", $CW_USEDEFAULT, "hwnd", $hGUI, "hwnd", 0, _
"hwnd", 0, "ptr", 0)
$hToolTip = $hToolTip[0]

$TestButton = GUICtrlCreateButton("Test", 105, 50, 75, 25)
_ToolTipCreate(GUICtrlGetHandle($TestButton), "Its a Test button")

$OkButton = GUICtrlCreateButton("Ok", 105, 100, 75, 25)
_ToolTipCreate(GUICtrlGetHandle($OkButton), "Its a Ok button")

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

GUISetState()

While 1
$msg = GUIGetMsg()
Switch $msg
Case -3
ExitLoop
EndSwitch
WEnd

Func _ToolTipCreate($sUid, $sText)

Local $tRect = DllStructCreate("int Left;int Top;int Right;int Bottom")
DllCall("user32.dll", "int", "GetClientRect", "hwnd", $sUid, "ptr", DllStructGetPtr($tRect))

Local $tBuffer = DllStructCreate("char[256]")
DllStructSetData($tBuffer, 1, $sText)

Local $TOOLINFO = DllStructCreate("int cbSize;int uFlags;hwnd hWnd;int uId;int rect[4];hwnd hinst;" & _
"ptr lpszText;int lParam;ptr lpReserved")

DllStructSetData($TOOLINFO, "cbSize", DllStructGetSize($TOOLINFO))
DllStructSetData($TOOLINFO, "uFlags", BitOR($TTF_CENTERTIP, $TTF_SUBCLASS))
DllStructSetData($TOOLINFO, "hWnd", $hGUI)
DllStructSetData($TOOLINFO, "uId", $sUid)
DllStructSetData($TOOLINFO, "rect", DllStructGetData($tRect, "Left"), 1)
DllStructSetData($TOOLINFO, "rect", DllStructGetData($tRect, "Top"), 2)
DllStructSetData($TOOLINFO, "rect", DllStructGetData($tRect, "Right"), 3)
DllStructSetData($TOOLINFO, "rect", DllStructGetData($tRect, "Bottom"), 4)
DllStructSetData($TOOLINFO, "hinst", 0)
DllStructSetData($TOOLINFO, "lpszText", 0)
DllStructSetData($TOOLINFO, "lParam", 0)
DllStructSetData($TOOLINFO, "lpReserved", 0)

DllCall("user32.dll", "int", "SendMessage", "hwnd", $hToolTip, "int", $TTM_ADDTOOL, "int", 0, _
"ptr", DllStructGetPtr($TOOLINFO))
EndFunc

Func RGB2BGR($iColor)
Return BitAND(BitShift(String(Binary($iColor)), 8), 0xFFFFFF)
EndFunc ;==>RGB2BGR()

Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
Local $tNMHDR, $hWndFrom, $iCode

$tNMHDR = DllStructCreate("hwnd hWndFrom;int IdFrom;int Code", $lParam)
$hWndFrom = DllStructGetData($tNMHDR, "hWndFrom")
$iCode = DllStructGetData($tNMHDR, "Code")

If $iCode = $TTN_GETDISPINFO Then ConsoleWrite($iCode & @LF)

Return "GUI_RUNDEFMSG"
EndFunc
Пытаюсь получить уведомление TTN_GETDISPINFO, но безуспешно :(
Инфа (http://www.rsdn.ru/article/qna/ui/dlgtips.xml)

DENoszone
01-06-2008, 12:39
а то что я написал можно вобоще сделать??
или нет?

djair
03-06-2008, 14:41
Подскажите, пожалуйста, можно ли без применения других программ, а только с помощью autoit залить файл на фтп? В архиве ничего подходящего не нашел... (Если боян, прошу не пинать :) )

Creat0R
03-06-2008, 16:44
DENoszone, в поле сообщения ввести определеный текст. »
В какое поле?

djair, залить файл на фтп? »
Тут (http://www.autoitscript.com/forum/index.php?showtopic=12473) есть библиотека для работы с FTP.

DENoszone
04-06-2008, 08:25
ну там ..куда писать..вообщем мне надо спам о этому сайту...
я хочу там в конкурсе выграть=)

Creat0R
04-06-2008, 08:53
DENoszone, ну там ..куда писать »
Меня просит войти под моим логином, которого у меня конечно нет :).

DENoszone
04-06-2008, 20:05
ну ..там легко зарегистрирватся=)

Creat0R
05-06-2008, 03:59
DENoszone, там легко зарегистрирватся »
Возможно, но у меня если честно нет желания, одна из причин это не хотение быть соучастником спамо-распространения :).




© OSzone.net 2001-2012