[Quote]

    AZJIO
  • 17953
  • Longevity: 1 year 1 month
  • Posts: 166
  • REPUTATION:40

    [+] [-]
ChkDskGui (PureBasic) Исходник + EXE, v3.1 (x86, x64)Скачать yadi.skИсходник на pastebin'еНе сделано:
1. нет компоновки окон
2. нет настройки через ini-файл (игнор дисков)
3. нет сортировки списка дисков, что определяет и порядок проверки


Last edited by AZJIO on 2019-02-27 09:20; edited 34 times in total

[Quote]

    Joker-2013
  • 1039
  • Longevity: 3 years 10 months
  • Posts: 2660
  • REPUTATION:127

    [+] [-]
  • Location: из прошлого
AZJIO, не помешали бы иконки дисков в ComboBox
(код видел, но пока не нашел...)
Запуск консольной утилиты, производить с помощью процедуры, которую поместить в отдельный поток. (так окно не будет зависать...)

[Quote]

    AZJIO
  • 17953
  • Longevity: 1 year 1 month
  • Posts: 166
  • REPUTATION:40

    [+] [-]
53522не помешали бы иконки дисков в ComboBox
1. Ну пока на повестке номера дисков
2. Думаю над семафором, то есть цикл окна в LockMutex(Mutex) UnlockMutex(Mutex) вставить, чтобы элементы не отвечали на события и семафором на ожидание конца процедуры (пример в CreateSemaphore). Пока это усложняет простоту проги практически не добавляя весомых удобств.

[Quote]

    Joker-2013
  • 1039
  • Longevity: 3 years 10 months
  • Posts: 2660
  • REPUTATION:127

    [+] [-]
  • Location: из прошлого
AZJIO,
2 Вот любят люди жизнь себе усложнять...
Вместо кода в событии на кнопки, пишем процедуру.
В событии на кнопке, проверяем запущен ли в данный момент поток и если нет, запускаем его...
И ничего блокировать не нужно в окне. Таскай и жмахай, сколько влезит...
Небольшая сложность в передаче параметров в процедуру, но это решаемо или глобальными переменными или структурой.
В справке есть примеры.
Иконки сделать не сложно, я видел пример, есть на 4.0 но его переделывать нужно...

Дополнительная информация

; English forum: http://www.curvesoftware.co.uk/purebasic/topic.asp?TOPIC_ID=5313
; Author: Denis
; *** Example for using Icons in a combobox ***
Structure DriveInfos
   DriveLetter.s
   DriveType.l
   DriveTypeString.s
   NameOfVolume.s
EndStructure
;;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
;                  Some windows constants
;;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
#ICC_USEREX_CLASSES  = $200
#WS_CHILD            = $40000000
#WS_VISIBLE          = $10000000
#CBS_DROPDOWN        = 2
#CBS_AUTOHSCROLL     = $40
#WS_VSCROLL          = $200000
#SHGFI_SYSICONINDEX  = $4000
#SHGFI_SMALLICON     = 1
#CLR_NONE            = $FFFFFFFF
#CBEM_SETIMAGELIST   = $00000402
#CBEM_INSERTITEM     = $00000401
#CBEIF_TEXT          = $00000001
#CBEIF_IMAGE         = $00000002
#CBEIF_SELECTEDIMAGE = $00000004
#CB_SETCURSEL        = $14E
#DRIVE_REMOVABLE     = 2
#DRIVE_FIXED         = 3
#DRIVE_REMOTE        = 4
#DRIVE_CDROM         = 5
#DRIVE_RAMDISK       = 6
;;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
;                  COMBOBOX Style
;;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
#EDITCOMBOBOX = #WS_CHILD| #WS_VISIBLE |#CBS_DROPDOWN | #CBS_AUTOHSCROLL | #WS_VSCROLL
;;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
;                  some Global vars
;;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
Global MainWindowID.l, Hinstance.l,HwndComboBox.l
;;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
;;/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*
;;/*/*/*/*/*/*/*/            Procedures           /*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*
;;/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*
Procedure.l CreateComboBoxGadget()
  ; return 0 if Combobox failed  Otherwise return Handle of combobox
  Hinstance = GetModuleHandle_(0)
; ComboBoxEx control must be initialized by calling the InitCommonControlsEx before calling CreateWindowEx API
; dwICC member of INITCOMMONCONTROLSEX structure must have #ICC_USEREX_CLASSES value
; CreateWindowEx class name must be ComboBoxEx32
  Var.INITCOMMONCONTROLSEX
  Var\dwSize = SizeOf(INITCOMMONCONTROLSEX)
  Var\dwICC  = #ICC_USEREX_CLASSES
  If InitCommonControlsEx_(@Var)
; CreateWindowEx parameters to create Combobox with Icons :
; CreateWindowEx_(#WS_EX_WINDOWEDGE,  --> extended combobox window style
;                 "ComboBoxEx32",     --> class name
;                 0,                  --> window name; put 0 when no name
;                 #EDITCOMBOBOX,      --> combobox window style
;                 40,                 --> horizontal position combobox
;                 10,                 --> vertical position of combobox
;                 300,                --> combobox width
;                 150,                --> combobox drop-down list height, not combobox height
;                 MainWindowID,       --> handle to parent or owner window, here main window
;                 0,                  --> handle to menu, or child-window identifier, put 0 when not exist
;                 Hinstance,          --> handle to application instance, --> Hinstance = GetmoduleHandle_(0)
;                 0)                  --> pointer to window-creation data, 0 here (see MS doc)
     HwndComboBox  = CreateWindowEx_(2, "ComboBoxEx32", 0, #EDITCOMBOBOX, 40, 10, 300,150, MainWindowID , 0, Hinstance, 0)
; get image list
     Path.s=Space(255)
     GetCurrentDirectory_(255,@Path)  ; Path = Current Directory string
     hImageList.l = SHGetFileInfo_(Path, 0, @InfosFile.SHFILEINFO, SizeOf(SHFILEINFO), #SHGFI_SYSICONINDEX |#SHGFI_SMALLICON)
     ImageList_SetBkColor_(hImageListS,#CLR_NONE)
; assign image list to Combobox
    SendMessage_(HwndComboBox, #CBEM_SETIMAGELIST, 0, hImageList)
  Else
     HwndComboBox = 0
  EndIf
  ProcedureReturn HwndComboBox
EndProcedure
;;/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*
;;/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*
Procedure GetAllDrives()
; create linked list to store drive name
Global NewList Drive.DriveInfos()
   ; Get all drives letter
   AllDrivesNames.s = Space(255)  ; AllDrivesNames receive string from GetLogicalDriveStrings API
   *AllDrivesNames.l = @AllDrivesNames
   DrivesExist.l = GetLogicalDriveStrings_(255,*AllDrivesNames)
   NbOfDrives.b = 0
   If DrivesExist
      NbOfDrives = DrivesExist/4
      lpFileSystemNameBuffer.s = Space(255)
      For i.b = 1 To NbOfDrives
         AddElement(Drive())
         ;;-------- Drive letter
         ;; Drive()\Name have 3 chars : first the drive letter
         ;; second ":"
         ;; third  "\"
         Drive()\DriveLetter = UCase(PeekS(*AllDrivesNames,3))
         *AllDrivesNames + 4
         ;;-------- Volume name
         Drive()\NameOfVolume = ""
         GetVolumeInformation_(Drive()\DriveLetter,Drive()\NameOfVolume,255,0,0,0,lpFileSystemNameBuffer,255)
         If Len(Drive()\NameOfVolume)
             Drive()\NameOfVolume = UCase(Left(Drive()\NameOfVolume ,1)) + LCase(Mid(Drive()\NameOfVolume ,2,Len(Drive()\NameOfVolume)-1))
         Else
             Drive()\NameOfVolume = ""
         EndIf
; determine type of drive
         Drive()\DriveType = GetDriveType_(@Drive()\DriveLetter)
         Select Drive()\DriveType
            Case 0  ; drive not determined
                 Drive()\DriveTypeString = "Indetermined Type"
            Case 1  ; 1 The root directory does not exist
                 Drive()\DriveTypeString = "Root directory does not exist"
            Case #DRIVE_REMOVABLE  ;The drive can be removed from the drive.
                 Drive()\DriveTypeString = "Floppy disk"
            Case #DRIVE_FIXED      ; The disk cannot be removed from the drive.
                 Drive()\DriveTypeString = "Not removed disk"
            Case #DRIVE_REMOTE     ; The drive is a remote (network) drive.
                 Drive()\DriveTypeString = "Remote (network) drive"
            Case #DRIVE_CDROM      ; The drive is a CD-ROM drive.
                 Drive()\DriveTypeString = "CD-ROM"
            Case #DRIVE_RAMDISK    ; The drive is a RAM disk.
                 Drive()\DriveTypeString = "RAM disk"
            Default
                 Drive()\DriveTypeString = "Indetermined Type"
         EndSelect
      Next i
    EndIf
EndProcedure
;;/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*
;;/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*
;;                                 Main Prog
;;/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*
;;/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*
MainWindowID = OpenWindow(0,0,0,400,150," List of your computer Drives",#PB_Window_ScreenCentered |#PB_Window_SystemMenu)
If MainWindowID And CreateGadgetList(WindowID(0)) And CreateComboBoxGadget()
         GetAllDrives()
         ResetList(Drive())
         Combo.COMBOBOXEXITEM
         Combo\mask = #CBEIF_TEXT | #CBEIF_IMAGE| #CBEIF_SELECTEDIMAGE
         InfosFile.SHFILEINFO
         ResetList(Drive())
         driveToDisplay.s= Space(255)
         While NextElement(Drive())
;  fill combobox with items, get image index of current drive, insert current item to the list
;  and  display second item
;  create strings to fill combobox with
            If Len(Drive()\NameOfVolume)
               driveToDisplay= Drive()\NameOfVolume  + " (" + Drive()\DriveTypeString + " "+ Left(Drive()\DriveLetter,2) + ")"
            Else
               driveToDisplay = Drive()\DriveTypeString + " (" + Left(Drive()\DriveLetter,2) + ")"
            EndIf
;  get image index of current drive
            SHGetFileInfo_(Drive()\DriveLetter, 0, @InfosFile, SizeOf(SHFILEINFO), #SHGFI_SYSICONINDEX |#SHGFI_SMALLICON )
            Combo\iItem          = -1                  ; -1 --> insert current item at the end of list
            Combo\pszText        = @driveToDisplay
            Combo\cchTextMax     = Len(driveToDisplay)
            Combo\iImage         = InfosFile\iIcon     ; image index of current image
            Combo\iSelectedImage = InfosFile\iIcon     ; image index of selected (displayed) item
            Combo\iIndent        = 1
;  insert current item to the list
            SendMessage_(HwndComboBox , #CBEM_INSERTITEM, 0, @Combo)
         Wend
;  display second item in combobox
         secondItemIndex = 1  ; index of first item is 0
         SendMessage_(HwndComboBox , #CB_SETCURSEL, secondItemIndex , 0)
Else
   MessageRequester("Error", "Can't create ComboBox",16)
   End
EndIf
; events loop
  Repeat
     Select WaitWindowEvent()
        Case #PB_Event_CloseWindow
          Quit = 1
     EndSelect
  Until Quit
End

[Quote]

    Joker-2013
  • 1039
  • Longevity: 3 years 10 months
  • Posts: 2660
  • REPUTATION:127

    [+] [-]
  • Location: из прошлого
AZJIO, Лучше уж так:
If Not IsThread(Thread)
  Thread = CreateThread(@RunProg(), 1)
EndIf
Только я не пойму, зачем ждать процесс выполнения после запуска...
RunProgram("cmd.exe", "/c (Title Check Disk & @Echo off & Color 1e & cls & " + GetComString() + " & set /p Ok=^>^>)", "", #PB_Program_Open | #PB_Program_Wait
#PB_Program_Open - открыл файл, его и закрыть после надо... Только зачем открывать то... Запуска не достаточно?
#PB_Program_Wait - и к чему ожидание? если не возврат, не ещё либо какие то данные, после работы консольной утили не считываются...

[Quote]

    Joker-2013
  • 1039
  • Longevity: 3 years 10 months
  • Posts: 2660
  • REPUTATION:127

    [+] [-]
  • Location: из прошлого
Вот код отображения иконок дисков:

Дополнительная информация

If OpenWindow(0, 0, 0, 300, 300, "Аssociated icon",  #PB_Window_SizeGadget|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)
file$ = "c:"
i=1
hIco=ExtractAssociatedIcon_(GetModuleHandle_(0), @file$, @i)
ImageGadget(0, 0, 0, 64, 64,hIco)
Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
;
EndIf

[Quote]

    nikzzzz
  • 215
  • Longevity: 4 years 2 months
  • Posts: 2532
  • REPUTATION:127

    [+] [-]
AZJIO, Привет.
53523 Ну пока на повестке номера дисков
Мой вариант:
Procedure.s DriveGetNumber(DriveLetter$)
  Protected DriveInfo.STORAGE_DEVICE_NUMBER, Ret$="",  hDevice = CreateFile_("\\.\" + DriveLetter$, 0, 0, 0, #OPEN_EXISTING, #FILE_ATTRIBUTE_NORMAL, #NUL)
  If hDevice
    If DeviceIoControl_(hDevice,#IOCTL_STORAGE_GET_DEVICE_NUMBER, 0, 0, DriveInfo, SizeOf(STORAGE_DEVICE_NUMBER), #NUL,  #NUL)
      Ret$=Str(DriveInfo\DeviceNumber) + ":" + Str(DriveInfo\PartitionNumber)
    EndIf
    CloseHandle_(hDevice)
  EndIf
  ProcedureReturn Ret$
EndProcedure
Debug DriveGetNumber("c:")
И еще ошибочка
Output$ + ReadProgramString(Prog) + Chr(13)
Не надо добавлять Chr(13) , читается не строка, а поток, в нем уже есть эти символы, и для совместимости с OemA2Ansi(Str$) читать надо поток надо в Raw виде, без преобразований.
Output$ + ReadProgramString(Prog,#PB_Unicode)


Last edited by nikzzzz on 2018-05-09 17:06; edited 1 time in total

[Quote]

    Joker-2013
  • 1039
  • Longevity: 3 years 10 months
  • Posts: 2660
  • REPUTATION:127

    [+] [-]
  • Location: из прошлого
nikzzzz, Петр предложил почти такой же вариант:
Structure IOCTL_STORAGE_GET_DEVICE_NUMBER
  DeviceType.l
  DeviceNumber.l
  PartitionNumber.i
EndStructure
Procedure GetDiskNimberForDrive(sDriveLetter.s, *Info.IOCTL_STORAGE_GET_DEVICE_NUMBER) ; Буква диска
  Res = 0
  hDevice = CreateFile_("\\.\" + sDriveLetter, 0, 0, 0, #OPEN_EXISTING, #FILE_ATTRIBUTE_NORMAL, 0)
  If hDevice
    Res = DeviceIoControl_(hDevice, $2D1080, 0, 0, *Info, SizeOf(IOCTL_STORAGE_GET_DEVICE_NUMBER), @x,  0)
    CloseHandle_(hDevice)
  EndIf
  ProcedureReturn Res
EndProcedure
x.IOCTL_STORAGE_GET_DEVICE_NUMBER
Debug GetDiskNimberForDrive("C:", @x)
Debug x\DeviceType
Debug x\DeviceNumber
Debug x\PartitionNumber
Но твой, компактнее...
А вот с иконками дисков в ComboBox, у меня что то не выходит...

[Quote]

    nikzzzz
  • 215
  • Longevity: 4 years 2 months
  • Posts: 2532
  • REPUTATION:127

    [+] [-]
Joker-2013,
53559Петр предложил почти такой же вариант:
Там есть маленькая ошибочка, и определяется структура, которая уже есть, поправленный вариант.
Procedure GetDiskNimberForDrive(sDriveLetter.s, *Info.STORAGE_DEVICE_NUMBER) ; Буква диска
  Protected Res = 0,  hDevice = CreateFile_("\\.\" + sDriveLetter, 0, 0, 0, #OPEN_EXISTING, #FILE_ATTRIBUTE_NORMAL, 0)
  If hDevice
    Res = DeviceIoControl_(hDevice, $2D1080, 0, 0, *Info, SizeOf(STORAGE_DEVICE_NUMBER), 0,  0)
    CloseHandle_(hDevice)
  EndIf
  ProcedureReturn Res
EndProcedure
x.STORAGE_DEVICE_NUMBER
Debug GetDiskNimberForDrive("C:", @x)
Debug x\DeviceType
Debug x\DeviceNumber
Debug x\PartitionNumber
Да, я свой вариант поправил, там тоже маленькая ошибочка была.

[Quote]

    Joker-2013
  • 1039
  • Longevity: 3 years 10 months
  • Posts: 2660
  • REPUTATION:127

    [+] [-]
  • Location: из прошлого
nikzzzz, ay ay ay
Тоже скоро нужна будет данная функа.

[Quote]

    AZJIO
  • 17953
  • Longevity: 1 year 1 month
  • Posts: 166
  • REPUTATION:40

    [+] [-]
Joker-2013
Главное чтобы какой наворот не помешал работе проге в урезанных условиях, всё же утилита системная.
твой пример ковырнул
If OpenWindow(0, 0, 0, 400, 250, "Пример с иконками дисков",  #PB_Window_MinimizeGadget)
  file$ = "C:"
  file2$ = "D:"
  i=1
  hIco=ExtractAssociatedIcon_(GetModuleHandle_(0), @file$, @i)
  hIco2=ExtractAssociatedIcon_(GetModuleHandle_(0), @file2$, @i)
  ComboBoxGadget(0, 20, 16, 200, 25, #PB_ComboBox_Image) ; Создаёт раскрывающийся список
  AddGadgetItem(0, -1, "Диск " + file$, hIco)
  AddGadgetItem(0, -1, "Диск " + file2$, hIco2)
  SetGadgetState(0, 0) ; Выбирает первый элемент списка
  Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
Есть мысль: иногда надо проверить 2 диска (а может более), проверка примерно 15 и 30 минут. Тогда можно добавить кнопку "Добавить в очередь", то есть выбрав диск добавляем в очередь, потом другой. Жмём "Старт", если очереди нет используем комбо, если есть используем очередь. Запускаем строку в которой 2 и более команд с chkdsk, перед данными вставляем инфостроку из комбо, чтобы потом просматривая лог было видно для какого диска это выполнялась, там только метка вроде по умолчанию.
Ещё... выходных почти нет, можно каждый из нас модернизировать и обновлять с датой обновления, а пришедшие скачивают критикуют или добавляют, в итоге быстрее всё сдвинется с места, ну конечно если есть желание. Я на день ночь ухожу и выпадаю почти на 2-е суток.

[Quote]

    Joker-2013
  • 1039
  • Longevity: 3 years 10 months
  • Posts: 2660
  • REPUTATION:127

    [+] [-]
  • Location: из прошлого
AZJIO,
#PB_ComboBox_Image : Включает поддержку изображений в элементах (не поддерживается для редактируемого ComboBox в OSX)
Вот тут, при тестах, я и облажался...
Проверил, иконки не отобразились и понавыдумывал что эскизы не того размера, посему и не работает...

[Quote]

    Joker-2013
  • 1039
  • Longevity: 3 years 10 months
  • Posts: 2660
  • REPUTATION:127

    [+] [-]
  • Location: из прошлого
53601можно каждый из нас модернизировать и обновлять с датой обновления, а пришедшие скачивают критикуют или добавляют, в итоге быстрее всё сдвинется с места, ну конечно если есть желание
Так никто кроме нас не пишет в теме...
Я всегда был лишь тестором и идейным вдохновителем, программист из меня никакой...
Сейчас и свои проекты забросил, дел по дому много...

оффтоп

Полазил я в Админке, было интересно, почему у нас две с лишнем тысячи пользователей на сайте, а пишут от силы 40...
И почему не удаляются, в автоматическом режиме, как завещал Puhpol...
Оказалось, что у нас на сайте много молчунов, которые периодически появляются, качают что либо и раздают.

[Quote]

    Joker-2013
  • 1039
  • Longevity: 3 years 10 months
  • Posts: 2660
  • REPUTATION:127

    [+] [-]
  • Location: из прошлого
Иконки добавил, с ними повеселей...

Дополнительная информация

i=1
    Handle = GetModuleHandle_(0)
    ForEach Drive.s()
      Text.s= Drive.s()
      Letter.s =LSet(Text,1)+":"
      hIco=ExtractAssociatedIcon_(Handle, @Letter, @i)
      AddGadgetItem(0, -1, Drive.s(), hIco)
    Next

[Quote]

    nikzzzz
  • 215
  • Longevity: 4 years 2 months
  • Posts: 2532
  • REPUTATION:127

    [+] [-]
AZJIO,
По поводу очереди, все можно сделать динамически, открыв консоль и добавляя в нее команды.
Пример
hCmd=RunProgram("cmd.exe", "", "", #PB_Program_Open|#PB_Program_Write)
WriteProgramStringN(hCmd,"@color 1e",#PB_Ascii)
WriteProgramStringN(hCmd,"cls & tracert usbtor.ru",#PB_Ascii)
While ProgramRunning(hCmd)
    Delay(100)
Wend
Или использовать свой вывод
Procedure.s OemA2Ansi(Str$)
  user32_dll=OpenLibrary(#PB_Any, "user32.dll")
  CallFunction(user32_dll,"OemToCharA",@Str$,@Str$)
  CloseLibrary(user32_dll)
  ProcedureReturn PeekS(@Str$,-1,#PB_Ascii)
EndProcedure
hCmd = RunProgram("cmd.exe", "", "", #PB_Program_Open|#PB_Program_Write|#PB_Program_Read|#PB_Program_Hide)
If IsProgram(hCmd)
  WriteProgramStringN(hCmd, "tracert usbtor.ru")
  WriteProgramStringN(hCmd, "exit")
  While ProgramRunning(hCmd)
    If AvailableProgramOutput(hCmd)
      Answer$=OemA2Ansi(ReadProgramString(hCmd,#PB_Unicode))
      If Answer$
        Debug Answer$
      EndIf
    EndIf
    Delay(100)
  Wend
EndIf

Page 1 of 18


Display posts:    

Current time is: 24-Apr 01:49

All times are UTC + 3


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum