![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как сделать "кнопку добавления файла". |
|
[решено] Как сделать "кнопку добавления файла".
|
Старожил Сообщения: 247 |
Кнопка при нажатии на которую открывался бы проводник где надо указать файл. После чего данный файл копировался в нужную нам папку.
|
|
Отправлено: 15:24, 12-05-2010 |
![]() Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать #include <File.au3> Global $sOut = "C:\" ; Папка назначения Global $szDrive, $szDir, $szFName, $szExt, $Path $sFileOpenDialog = FileOpenDialog("Выберите файл", @ProgramFilesDir & "\", "Exe (*.exe)", 1 + 8 + 16) If Not (@error) Then $aPath = _PathSplit($sFileOpenDialog, $szDrive, $szDir, $szFName, $szExt) If FileExists($sFileOpenDialog) And IsArray($aPath) Then FileCopy($sFileOpenDialog, $sOut & $aPath[3] & $aPath[4]) EndIf |
Отправлено: 16:09, 12-05-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать FlatX007, в этом случае имя файла указывать не обязательно:
Global $sOut = "C:\" ; Папка назначения $sFile = FileOpenDialog("Выберите файл", @ProgramFilesDir, "Exe (*.exe)", 1 + 8 + 16) If Not @error Then FileCopy($sFile, $sOut) ShellExecute($sOut) EndIf |
------- Отправлено: 16:48, 12-05-2010 | #3 |
![]() Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <File.au3> #include <WinAPIEx.au3> #include <Misc.au3> Global $sOut = "C:\" ; Папка назначения Global $szDrive, $szDir, $szFName, $szExt, $aPath Global $hProgressProc = DllCallbackRegister('_ProgressProc', 'dword', 'uint64;uint64;uint64;uint64;dword;dword;ptr;ptr;ptr') $Form1 = GUICreate("", 248, 46) $Button1 = GUICtrlCreateButton("Выбрать файл", 16, 8, 219, 25) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 _FileCopy() Switch @error Case 0 MsgBox(64, "", "Файл скопирован") Case 1 MsgBox(48, "", "Файл НЕ скопирован!") EndSwitch _Exit() EndSwitch WEnd Func _FileCopy() $sFileOpenDialog = FileOpenDialog("Выберите файл", @ProgramFilesDir & "\", "File (*.*)", 1 + 8 + 16) If Not (@error) Then $aPath = _PathSplit($sFileOpenDialog, $szDrive, $szDir, $szFName, $szExt) If FileExists($sFileOpenDialog) And IsArray($aPath) Then ProgressOn('_WinAPI_CopyFileEx', 'Copying...', '', -1, -1, 2) _WinAPI_CopyFileEx($sFileOpenDialog, $sOut & $aPath[3] & $aPath[4], 0, DllCallbackGetPtr($hProgressProc)) If Not @error Then Return SetError(0, 0, 0) Else _WinAPI_ShowLastError() Return SetError(1, 0, 0) EndIf EndIf EndIf EndFunc ;==>_FileCopy Func _ProgressProc($iTotalFileSize, $iTotalBytesTransferred, $iStreamSize, $iStreamBytesTransferred, $iStreamNumber, $iCallbackReason, $hSourceFile, $hDestinationFile, $iData) Local $Percent = Round($iTotalBytesTransferred / $iTotalFileSize * 100) If $Percent = 100 Then ProgressSet($Percent, '', 'Complete') Else ProgressSet($Percent) EndIf If _IsPressed('1B') Then Return $PROGRESS_CANCEL Else Return $PROGRESS_CONTINUE EndIf EndFunc ;==>_ProgressProc Func _Exit() DllCallbackFree($hProgressProc) ProgressOff() EndFunc ;==>_Exit |
Отправлено: 16:57, 12-05-2010 | #4 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать FlatX007, и что? зачем всё усложнять когда автор темы точно описал задачу?
|
|
------- Отправлено: 18:50, 12-05-2010 | #5 |
![]() Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Конечно точно описал задачу ... а если файл 4 гига, солько ждать окончания копирования ?
|
Отправлено: 13:16, 13-05-2010 | #6 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата FlatX007:
|
|
------- Отправлено: 16:25, 13-05-2010 | #7 |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать а если файлов несколько?......как это проще сделать?
|
Отправлено: 17:21, 12-06-2010 | #8 |
![]() Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать ; Папки не копируются, только файлы! Global $OUT = 'C:\Out' Global $iIncrease, $iProsent DirCreate($OUT) $sMultiOpenFiles = _FileOpenDialogEx("Выберите файлы для копирования", @ProgramFilesDir, "File (*.*)", 4, -1) If Not (@error) Then $iIncrease = 100 / $sMultiOpenFiles[0] For $i = 1 To $sMultiOpenFiles[0] FileCopy($sMultiOpenFiles[$i], $OUT) $iProsent += $iIncrease ConsoleWrite(Round($iProsent) & ' %' & @CRLF) Next EndIf Func _FileOpenDialogEx($sTitle, $sInitDir, $sFilter, $iOptions = 0, $iReturnMode = -1, $sDefaultName = '', $hWnd = 0) Local $sFOD_Ret = FileOpenDialog($sTitle, $sInitDir, $sFilter, $iOptions, $sDefaultName, $hWnd) If @error Then Return SetError(@error, @extended, $sFOD_Ret) Local $sRet = '' Local $aSplit_Str = StringSplit($sFOD_Ret, '|') If @error Or $aSplit_Str[0] < 2 Then If $iReturnMode > 0 Then Return $sFOD_Ret Return $aSplit_Str EndIf Local $sInit_Path = StringRegExpReplace($aSplit_Str[1], '([^\\])\\*$', '\1') For $i = 2 To $aSplit_Str[0] $sRet &= $sInit_Path & '\' & $aSplit_Str[$i] & '|' Next $sRet = StringRegExpReplace($sRet, '\|+$', '') If $iReturnMode > 0 Then Return $sRet Return StringSplit($sRet, '|') EndFunc ;==>_FileOpenDialogEx |
Отправлено: 18:59, 12-06-2010 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Как сделать кнопку "Ждущий режим" не активной | Mishechka | Microsoft Windows 2000/XP | 2 | 06-05-2010 11:56 | |
Интерфейс - [решено] как создать в панели задач кнопку "Свернуть все окна"? | woldemarok | Microsoft Windows 7 | 20 | 23-03-2010 23:25 | |
Интерфейс - Как отключить кнопку "завершение работы" в экране приветствия vista | Заказчик | Microsoft Windows Vista | 4 | 26-10-2009 16:00 | |
Почему Windows при запуске файла с именем "start.exe" показывает кнопки как "Пуск"? | Котяра | Хочу все знать | 9 | 22-06-2009 13:48 | |
[решено] Помогите сделать кнопку для создания атрибута окну "поверх всеx" | Pozia | AutoIt | 2 | 21-02-2009 22:48 |
|