PDA

Показать полную графическую версию : Простейшее окно с ограничениями


11943499
15-03-2010, 00:43
Ребята, нужна помощь...
Нужно открыть окно файл-менеджера с нужным диском и чтобы показывалось содержимое только этого диска без возможности переключаться на другие ресурсы но с возможностью запуска прог.
Или же на крайняк использовать функцию (?) windows открытия диска.
"FileOpenDialog" не предлагать ! )

kaster
15-03-2010, 00:49
FileSelectFolder('Choose folder', 'C:\', 1+2+4, '')

11943499
15-03-2010, 01:14
Это даже для "крайняка" не подходит. Нужен доступ к файлам и их запуску.

kaster
15-03-2010, 01:21
11943499, то бишь написать файл manager? :D
идея конечно заманчивая и интересная. но я на седня пасс. возможно завтра :)

11943499
15-03-2010, 01:26
Наверняка есть готовая функция api или что-то вроде, позволяющее инициировать файловый диалог...

kaster
15-03-2010, 01:29
11943499, ну да. и это FileOpenDialog. но он тебе, как ты говоришь, не подходит

gregaz
15-03-2010, 17:07
Как вам такой простенький вариант :

Test GUI : #include <WindowsConstants.au3>
#include <GUITreeView.au3>
#include <File.au3>

$hGUI = GUICreate("Test", 400, 500)

$hTreeView = GUICtrlCreateTreeView(6, 6, 300, 450, -1, $WS_EX_STATICEDGE+$WS_EX_CLIENTEDGE)
_GUICtrlTreeView_SetBkColor($hTreeView , 0xDBDBDB )

$idDiscItem=GUICtrlCreateTreeViewItem("D:",$hTreeView)
_GUICtrlTreeView_SetIcon($hTreeView,$idDiscItem,"shell32.dll",7)
$Exit_Button = GUICtrlCreateButton("Exit", 330, 470, 60, 20)

GUISetState()

While 1
$nMsg = GUIGetMsg()


Switch $nMsg
Case -3, $Exit_Button
Exit
Case Else
If $nMsg <= 0 Then ContinueLoop
$iItem_CtrlID = GUICtrlRead($hTreeView)
$sFullName=StringReplace(_GUICtrlTreeView_GetTree($hTreeView, $iItem_CtrlID) ,'|','\')
UpDateTV($hTreeView,$iItem_CtrlID)
If StringInStr ( FileGetAttrib ($sFullName ) , "D") Then ContinueLoop
ShellExecute($sFullName)
EndSwitch
WEnd

Func UpDateTV($hTV,$idItem)
If _GUICtrlTreeView_GetChildren($hTV,$idItem) =False Then
$aFolderList=_FileListToArray( $sFullName,'*',2)
For $i =1 To UBound($aFolderList)-1
$hChild=GUICtrlCreateTreeViewItem ( $aFolderList[$i], $idItem )
_GUICtrlTreeView_SetIcon($hTV,$hChild,"shell32.dll",3)
Next
$aFileList=_FileListToArray( $sFullName,'*',1)
For $i =1 To UBound($aFileList)-1
$hChild=GUICtrlCreateTreeViewItem ( $aFileList[$i], $idItem )
_GUICtrlTreeView_SetIcon($hTV,$hChild,"shell32.dll",0)
Next
_GUICtrlTreeView_Expand($hTV, $idItem)
EndIf
EndFunc



Лучше конечно использовать : WM_NOTIFY
Можно причесывать его : Находить файл иконки и т.д.

11943499
15-03-2010, 23:04
Как вам такой простенький вариант :
Test GUI :
читать дальше » »

Не понял что за ссылка, кидает в начало моей же ветки... ?

kaster
15-03-2010, 23:11
Не понял что за ссылка, кидает в начало моей же ветки... ? »
у тебя не FireFox с NoScript? если так, просто добавь oszone.net в список доверенных сайтов
а там просто раскрывающийся блок с кодом того, что тебе надо

11943499
16-03-2010, 00:09
у тебя не FireFox с NoScript? если так, просто добавь oszone.net в список доверенных сайтов
а там просто раскрывающийся блок с кодом того, что тебе надо »
Если не сложно, просьба передать код любым другим способом.... Ни опера, ни IE не открывают эту ссылку.

kaster
16-03-2010, 00:18
#include <WindowsConstants.au3>
#include <GUITreeView.au3>
#include <File.au3>

$hGUI = GUICreate("Test", 400, 500)

$hTreeView = GUICtrlCreateTreeView(6, 6, 300, 450, -1, $WS_EX_STATICEDGE+$WS_EX_CLIENTEDGE)
_GUICtrlTreeView_SetBkColor($hTreeView , 0xDBDBDB )

$idDiscItem=GUICtrlCreateTreeViewItem("D:",$hTreeView)
_GUICtrlTreeView_SetIcon($hTreeView,$idDiscItem,"shell32.dll",7)
$Exit_Button = GUICtrlCreateButton("Exit", 330, 470, 60, 20)

GUISetState()

While 1
$nMsg = GUIGetMsg()


Switch $nMsg
Case -3, $Exit_Button
Exit
Case Else
If $nMsg <= 0 Then ContinueLoop
$iItem_CtrlID = GUICtrlRead($hTreeView)
$sFullName=StringReplace(_GUICtrlTreeView_GetTree($hTreeView, $iItem_CtrlID) ,'|','\')
UpDateTV($hTreeView,$iItem_CtrlID)
If StringInStr ( FileGetAttrib ($sFullName ) , "D") Then ContinueLoop
ShellExecute($sFullName)
EndSwitch
WEnd

Func UpDateTV($hTV,$idItem)
If _GUICtrlTreeView_GetChildren($hTV,$idItem) =False Then
$aFolderList=_FileListToArray( $sFullName,'*',2)
For $i =1 To UBound($aFolderList)-1
$hChild=GUICtrlCreateTreeViewItem ( $aFolderList[$i], $idItem )
_GUICtrlTreeView_SetIcon($hTV,$hChild,"shell32.dll",3)
Next
$aFileList=_FileListToArray( $sFullName,'*',1)
For $i =1 To UBound($aFileList)-1
$hChild=GUICtrlCreateTreeViewItem ( $aFileList[$i], $idItem )
_GUICtrlTreeView_SetIcon($hTV,$hChild,"shell32.dll",0)
Next
_GUICtrlTreeView_Expand($hTV, $idItem)
EndIf
EndFunc
©gregaz




© OSzone.net 2001-2012