Показать полную графическую версию : [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
Maza Faka
06-01-2009, 15:54
Жмем на ссылку в программе »
Что за программа?
Вместо браузера кладем свою программу »
Какую программу? Куда?
Поконкретней пожалуйста :)
Хмм... похоже на баг, если не использовать функцию GUICtrlSetStyle, то ToolTip срабатывает. »
Да, и я это заметил... Может есть способ обойти это безобтазие? :help:
Maza Faka
06-01-2009, 16:32
Может есть способ обойти это безобтазие? »
WinAPI спешит на помощь!
#include <GUIConstants.au3>
#include <StaticConstants.au3>
#include <WinAPI.au3>
#include <Constants.au3>
GUICreate("My GUI", 250, 150)
$Btn1 = GUICtrlCreateButton("ON", 10, 10, 50)
$Btn2 = GUICtrlCreateButton("OFF", 10, 40, 50)
$Label = GUICtrlCreateLabel("Test", 70, 45, 53, 15)
$hLabel = GUICtrlGetHandle($Label)
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Btn1
$iStyle = _WinAPI_GetWindowLong($hLabel, $GWL_STYLE)
_WinAPI_SetWindowLong($hLabel, $GWL_STYLE, BitOR($iStyle, $SS_GRAYFRAME))
GUICtrlSetBkColor($Label, 0xFFFF00)
GUICtrlSetTip($Label, "My TIP")
Case $Btn2
GUICtrlSetStyle(-1, $SS_GRAYFRAME)
EndSwitch
WEnd
:)
266903582
06-01-2009, 17:42
Что за программа? »
Абсолютно любая: почтовый менеджер (ссылка в письме) файлменеджер (открываем файл *.url)
Какую программу? Куда? »
Моя программа на автоите. Читает параметры командной строки и распоряжается ими.
MsgBox(0,"",$CmdLineRaw)
Если такую программу познакомить с системой, как новый браузер по умолчанию, то и произойдет описываемая ошибка.
Чтобы не курочить реестр понапрасну, замени ехе-шник своего браузера и запусти сторонний линк. Вместе с нужными параметрами будет бонус.
Почему? »
Я вроде написал причину... вообщем чтобы не было проблем вроде той что была у SAOPP.
Пусть WinSetState(Title, Text, 8) и активирует, даже скрытое окно, ведь эта функция и предназначена для установки состояния окна, а WinActivate пусть работает с видимыми окнами, у нас уже есть вроде функции которые только с видимыми умеют работать.
Может быть в @extended сохраняется состояние окна перед активизацией? »
Ну да, но об этом в справке не пишут.
WinAPI спешит на помощь! »
Хе-хе, оказывается это не бага, ну по крайней мере оно решается и нативными средствами:
#include <GUIConstants.au3>
#include <StaticConstants.au3>
GUICreate("My GUI", 250, 150)
$Btn1 = GUICtrlCreateButton("ON", 10, 10, 50)
$Btn2 = GUICtrlCreateButton("OFF", 10, 40, 50)
$Label = GUICtrlCreateLabel("Test", 70, 45, 53, 15)
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Btn1
GUICtrlSetStyle($Label, BitOr($GUI_SS_DEFAULT_LABEL, $SS_NOTIFY))
GUICtrlSetBkColor($Label, 0xFFFF00)
GUICtrlSetTip($Label, "My TIP")
Case $Btn2
GUICtrlSetStyle($Label, BitOr($GUI_SS_DEFAULT_LABEL, $SS_NOTIFY, $SS_GRAYFRAME))
EndSwitch
WEnd
Видимо просто при использовании GUICtrlSetStyle стиль $SS_NOTIFY сбрасывается, а он нужен для обработки событии (внутренней обработки аутоитом, например для того же Tip'са :) ).
P.S
А я уже баг репорт отправил (http://www.autoitscript.com/trac/autoit/ticket/765) :shuffle:
TERMINAL
07-01-2009, 03:02
Возможно ли узнать тип процессора (Intel или AMD) ?
Maza Faka
07-01-2009, 10:03
Пусть WinSetState(Title, Text, 8) и активирует, даже скрытое окно, ведь эта функция и предназначена для установки состояния окна, а WinActivate пусть работает с видимыми окнами »
Ну это разработчикам виднее.
Хе-хе, оказывается это не бага, ну по крайней мере оно решается и нативными средствами »
А я уже баг репорт отправил »
Мдаа... поторопились с баг репортом :)
Возможно ли узнать тип процессора (Intel или AMD) ? »
Можно используя WMI:
$strComputer = "."
$objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * from Win32_Processor")
For $objItem In $colItems
ConsoleWrite("Manufacturer: " & $objItem.Manufacturer & @LF & _
"Name: " & $objItem.Name & @LF)
Next
Добрый демь после дебат по поводу сворачивания окна от которого мой почтовый ящик слегка вструхнуло.Мой вопрос будет выглядить на уровне детского сада. Вопрос в следующем помогите написать первый мой масив
Пример кода:
#include <GUIConstants.au3>
GUICreate("Моё окно", 200, 115)
$List_001 = GUICtrlCreateCombo ("", 5, 5, 100, 20)
GUICtrlSetData(-1, "Роза|Тюльпан|Гвоздика", "Роза")
$Button_001 = GUICtrlCreateButton ("Ok", 20, 80, 75, 20)
GUISetState ()
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Select
Case $msg = $Button_001
IniWrite("List.ini", "List", "List", GUICtrlRead($List_001))
Exit
EndSelect
Wend
Может я не правельно выразилсяна щёт масива но суть в следующем:если выбераю "Роза" то в ини фаел передаёться "1" если "Тюльпан"то "2" а если "Гвоздика то "3" чтение справки недало результата хотелось бы живой премер.
266903582
07-01-2009, 20:04
Может я не правельно выразилсяна щёт масива но суть в следующем:если выбераю "Роза" то в ини фаел передаёться "1" если "Тюльпан"то "2" а если "Гвоздика то "3" чтение справки недало результата хотелось бы живой премер. »
#include <GUIConstants.au3>
GUICreate("Моё окно", 200, 115)
$List_001 = GUICtrlCreateCombo ("", 5, 5, 100, 20)
GUICtrlSetData(-1, "Роза|Тюльпан|Гвоздика", "Роза")
$Button_001 = GUICtrlCreateButton ("Ok", 20, 80, 75, 20)
GUISetState ()
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Select
Case $msg = $Button_001
if GUICtrlRead($List_001)="Роза" Then iniWrite("List.ini", "List", "List","1")
if GUICtrlRead($List_001)="Тюльпан" Then iniWrite("List.ini", "List", "List","2")
if GUICtrlRead($List_001)="Гвоздика" Then iniWrite("List.ini", "List", "List","3")
exitloop
EndSelect
Wend
И если необходимо убить GUI, то не обязательно закрывать всю программу...
Помогите узнать истину! Суть вот в чем: часто в примерах знающие приводят в коде некоторые константы, как я понял, например вот эти: $WS_CAPTION, $WS_POPUP, $WS_SYSMENU,$WM_MOVE ну и другие, а в справке ни в русской, ни в английской к программе о них ни-гугу, в интернете искал, что они значат, тож ноль, а код не хочет выполнятся, ибо ругается что "эти" не описаны, но я так понял, что их и не нужно прописывать, а Autoit сам знает, что оно такое. Внимание вопрос: где найти описание этих и подобных, и почему описанный ниже пример с этими,с форума ру.боард у меня не хочет работать, ибо не может понять, что эти - такое?
Пример : #include <GUIConstants.au3>
Global Const $WM_MOVE = 0x0003
$Form1 = GUICreate("Form1", 193, 106, 193, 125)
$Button1 = GUICtrlCreateButton("Button1", 8, 64, 75, 25, 0)
$Form2 = GUICreate("Form2", 193, 106, 193, 100, BitOR($WS_CAPTION, $WS_POPUP, $WS_SYSMENU), -1, $Form1)
GUISetState(@SW_SHOW, $Form1)
GUIRegisterMsg($WM_MOVE, "WM_MOVE")
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
If Not BitAND(WinGetState($Form2), 2) Then
GUISetState(@SW_SHOW, $Form2)
Else
GUISetState(@SW_HIDE, $Form2) ;Это можно убрать если не нужно прятать
EndIf
EndSwitch
WEnd
Func WM_MOVE($hWndGUI, $MsgID, $WParam, $LParam)
If $hWndGUI = $Form1 Then
$aParent_Pos = WinGetPos($Form1)
WinMove($Form2, "", $aParent_Pos[0], $aParent_Pos[1]-25, $aParent_Pos[2], $aParent_Pos[3])
Else
$aChild_Pos = WinGetPos($Form2)
WinMove($Form1, "", $aChild_Pos[0], $aChild_Pos[1]+25, $aChild_Pos[2], $aChild_Pos[3])
EndIf
EndFuncP.S.https://forum.ru-board.com/topic.cgi?forum=5&topic=17705&start=1000
Добавлено:Попробовал объявить так - Dim $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WM_MOVE - Заработало! Но вопрос в силе, где найти описание?
в интернете искал, что они значат, тож ноль »
Нужно искать (http://www.google.ru/search?hl=ru&q=WS_CAPTION) без символа $.
где найти описание этих и подобных »
Есть на оф. форуме утилита: Win32 API Constants (Skinnable) (http://www.autoitscript.com/forum/index.php?autocom=downloads&showfile=17)
почему описанный ниже пример с этими,с форума ру.боард у меня не хочет работать »
Нужно добавить #include <WindowsConstants.au3>, и к тому же там есть синтаксическая ошибка (в BitOr)...
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 193, 106, 193, 125)
$Button1 = GUICtrlCreateButton("Button1", 8, 64, 75, 25, 0)
$Form2 = GUICreate("Form2", 193, 106, 193, 100, BitOR($WS_CAPTION, $WS_POPUP, $WS_SYSMENU), -1, $Form1)
GUISetState(@SW_SHOW, $Form1)
GUIRegisterMsg($WM_MOVE, "WM_MOVE")
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
If Not BitAND(WinGetState($Form2), 2) Then
GUISetState(@SW_SHOW, $Form2)
Else
GUISetState(@SW_HIDE, $Form2) ;Это можно убрать если не нужно прятать
EndIf
EndSwitch
WEnd
Func WM_MOVE($hWndGUI, $MsgID, $WParam, $LParam)
If $hWndGUI = $Form1 Then
$aParent_Pos = WinGetPos($Form1)
WinMove($Form2, "", $aParent_Pos[0], $aParent_Pos[1] - 25, $aParent_Pos[2], $aParent_Pos[3])
Else
$aChild_Pos = WinGetPos($Form2)
WinMove($Form1, "", $aChild_Pos[0], $aChild_Pos[1] + 25, $aChild_Pos[2], $aChild_Pos[3])
EndIf
EndFunc
Спасибо,Creat0R за потраченное время на ответ. Искал действительно с символом $. Биг сенкс. Теперь нашел по совету вот >http://trubetskoy1.narod.ru/translate/Translation01.html тут описано много таких констант для работы с GUI, пробовал, работает!!!
morgan1991
09-01-2009, 00:17
Скажите, есть файл (архив) в нём несколько папок в одной из папок есть несколько файлов с раширением wav. Может ли автоит запустить любой файл и заменить его прямо в архиве на другой?
266903582
09-01-2009, 01:10
morgan1991, я для таких задач использовал winrar, у него есть хорошая справочка по командам. Составляй список аргументов и работай с архивами, перепаковывая что угодно...
Maza Faka
09-01-2009, 06:54
если выбераю "Роза" то в ини фаел передаёться "1" если "Тюльпан"то "2" а если "Гвоздика то "3" »
Если порядок строк сохраняется, то можно так:
#include <GUIConstants.au3>
#include <ComboConstants.au3>
GUICreate("Моё окно", 200, 115)
$List_001 = GUICtrlCreateCombo("", 5, 5, 100, 20)
GUICtrlSetData(-1, "Роза|Тюльпан|Гвоздика", "Роза")
$Button_001 = GUICtrlCreateButton("Ok", 20, 80, 75, 20)
GUISetState()
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Select
Case $msg = $Button_001
$iIndex = GUICtrlSendMsg($List_001, $CB_GETCURSEL, 0, 0) ;Получаем индекс текущей строки (отсчёт индекса начинается с нуля)
IniWrite("List.ini", "List", "List", $iIndex + 1)
EndSelect
WEnd
morgan1991
Какой тип архива?
Да оба премера работают во втором как бы проще но непонял цытаты:Если сохраняеться порядок строк.
И если позволете чуть чуть усложнить
КАк с помощью значения $List_000 = IniRead("List.ini", "List", "List", "")
вернуть в окно значение по умолчанию
Да ивобще несильно ли я мудрую когда перевожу таким образом переменые может просто забивать в ини файл то что содержут строки и не заморачиваться, просто возникают сомнение строки будут содержатьсловосочитания и как это может повлиять потом на работу скрипта
код:
#include <GUIConstants.au3>
#include <ComboConstants.au3>
GUICreate("Моё окно", 200, 115)
$List_000 = IniRead("List.ini", "List", "List", "")
$List_001 = GUICtrlCreateCombo("", 5, 5, 100, 20)
GUICtrlSetData(-1, "Роза|Тюльпан|Гвоздика", $List_000)
$Button_001 = GUICtrlCreateButton("Ok", 20, 80, 75, 20)
GUISetState()
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Select
Case $msg = $Button_001
$iIndex = GUICtrlSendMsg($List_001, $CB_GETCURSEL, 0, 0)
;Получаем индекс текущей строки (отсчёт индекса начинается с нуля)
IniWrite("List.ini", "List", "List", $iIndex + 1)
EndSelect
WEnd
КАк с помощью значения $List_000 = IniRead("List.ini", "List", "List", "")
вернуть в окно значение по умолчанию »
Нужно использовать $CB_SETCURSEL:
#include <GUIConstants.au3>
#include <ComboConstants.au3>
GUICreate("Моё окно", 200, 115)
$iList_Default = IniRead("List.ini", "List", "List", "")
$List = GUICtrlCreateCombo("", 5, 5, 100, 20, BitOr($GUI_SS_DEFAULT_COMBO, $CBS_DROPDOWNLIST))
GUICtrlSetData($List, "Роза|Тюльпан|Гвоздика")
GUICtrlSendMsg($List, $CB_SETCURSEL, Number($iList_Default), 0)
$Button = GUICtrlCreateButton("Ok", 20, 80, 75, 20)
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $Button
;Получаем индекс текущей строки (отсчёт индекса начинается с нуля)
$iIndex = GUICtrlSendMsg($List, $CB_GETCURSEL, 0, 0)
IniWrite("List.ini", "List", "List", $iIndex)
Exit
EndSwitch
WEnd
Народ не пинайте сильно если не по теме спрошу. В скриптах я ноль почти полный а нужно мне очень Windows Script Encoder. Нужен он для создания защиты на диск по этой теме (http://forum.oszone.net/thread-71645.html). Подскажите где скачать, весь нет облазил не нашел и в той теме нету. Спасибо
BonD 007
09-01-2009, 23:58
при нажатии тех же Ctrl + Shift + n создавалась папка в любом окне Explorer'а, которое в данный момент активно (или на рабочем столе)
Правильно заданный вопрос - половина ответа »
Ты на что намекаешь, Maza Faka? Что я вопрос неправильно задал? Рабочий стол это тоже оболочка Explorer'а.
Люди, можно ли сделать скрипт, который бы после запуска показывал/скрывал скрытые файлы и папки? Если уже есть что-то подобное, дайте пожалуйста.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.