كيفية الحصول على النصوص في ListBox باستخدام Autoit
-
02-10-2019 - |
سؤال
انا استخدم تلقائي لإنشاء تطبيق التثبيت التلقائي. يوجد مربع حوار يحتوي على عنصر تحكم في قائمة القائمة ، وفي صندوق القائمة هناك بعض الخيارات للمستخدم (يعتمد الخيارات التفصيلية على جهاز المستخدم. بالنسبة لبعض المستخدمين ، ربما يكون هناك خيار واحد فقط ، لبعض المستخدمين قد يكون هناك ثلاثة خيارات ، إلخ) ، لذلك أريد الحصول على النصوص في صندوق القائمة لاتخاذ القرار. لقد جربت الرمز التالي ، لكنه لم ينجح.
; 2223 is the ID of listbox
$txt = ControlGetText("Select Web Site", "", "[ID:2223]")
Msgbox(0, "", $txt)
بعد التنفيذ $txt
باطل.
إذن ما الذي يجب علي فعله للحصول على النصوص في Listbox؟
فيما يلي سمة قائمة المراقبة بواسطة معلومات نافذة V3 Autoit V3:
Class: WindowsForms10.Listbox.app.0.33c0d9d
المحلول 4
ما أريد القيام به هو تحديد أحد العناصر المسمى "موقع الويب الافتراضي" في القائمة ، ولكن يبدو أنه لا يمكن الحصول على محتوى القائمة ، لذلك جربت أخيرًا طريقة أخرى:
في البداية ، أجعل قائمة القائمة مركزة ، ثم اخترت العنصر "موقع الويب الافتراضي" عن طريق إرسال "def":
ControlFocus($Title, "", "[NAME:lbWebSites]")
; Select the option "Default Web Site", so press "def" to set the desired item.
Send("Def")
نصائح أخرى
لقد وجدت أمر "إرسال" غير موثوق به في بعض الأحيان ، خاصةً إذا كان الكمبيوتر قفلًا.
لقد عملت "Controlsend" دائمًا على الحصول على ضغطات المفاتيح حيث أريدها.
كتبت اختبارًا للتحقق لمعرفة ما إذا كان عنصر ما في مربع التحرير والسرد. قد تكون هناك وظائف مماثلة لصناديق القائمة باستخدام guicombobox.au3.
Func DoesItemExistInComboBox($windowtitle, $windowtext, $comboboxcontrol, $itemtocheck)
$returnvalue = 0
$ComboBoxHandle = ControlGetHandle($windowtitle, $windowtext, $comboboxcontrol)
$ComboBoxArray = _GUICtrlComboBox_GetListArray($ComboBoxHandle)
For $i = 0 TO UBound($ComboBoxArray)-1
If $ComboBoxArray[$i] = $itemtocheck Then
$returnvalue = 1
EndIf
Next
return $returnvalue
EndFunc
ماذا عن:
ControlCommand("My GUI", "", "[CLASS:ListBox; INSTANCE:1]", "SelectString", "item2")