دوست عزيز
برنامتون رو ديدم. پيشنهاد ميكنم تو كليد TextBTN1 جايي كه شرط test<>0 رو نوشتيد.
کد:
If (test<>0) Then
ListBoxAddItem("DetectedFiles","STRING:ArrayItem$")
DetectedFiles=DetectedFiles+1
End
يعني جايي كه نتيجه جستجو تو ليست باكس DetectedFiles برگردونده ميشه.
به جاي دستورات داخل اون شرط اين كد رو بنويسيد.
کد:
itm$=ExtractName(ArrayItem$)+ExtractExt(ArrayItem$)
result$=ExtractName(ArrayItem$)+ExtractExt(ArrayItem$)+'#'+ ArrayItem$+'#'
path$='<SrcDir>\result.txt'
retval=StrToFile(path$,result$,TRUE,TRUE)
ListBoxAddItem("DetectedFiles","itm$")
DetectedFiles=DetectedFiles+1
در اينصورت فقط نام فايلي كه تو جستجو پيدا شده تو ليست باكس شما ثبت ميشه و نام فايل و آدرسش تو فايل متني كه كنار برنامه قرار داره ذخيره ميشه.
شما ميتونيد در آغاز عمليات جستجو جديد اين فايل متني رو پاك كنيد تا محتويات جستجو قبلي از بين بره.
بعد از اينكه كد بالا رو تو اون شرط نوشتيد اين كد رو هم تو قسمت اسكريپت نويسي ليست باكس DetectedFiles بنويسيد تا هربار كه كاربر رو آيتمي در ليست باكس دابل كليك ميكنه از فايل متني كنار برنامه آدرس فايل مربوطه فراخواني و فايل اجرا بشه.
کد:
ListBoxGetSelectedItems("DetectedFiles","selitems$,selitemsnum$,#,selnumitems")
len=LEN(selitems$)-1
selitems$=StrCopy(selitems$,1,len)
path$='<SrcDir>\result.txt'
For i=1 To NOL(path$)
str$=StrFromFile(path$,i,1)
x=POS(selitems$,str$)
If (x=1) Then
str$=GetArrayItem(str$,'#',2)
Run("str$","")
Return()
End
Next i
يك نكته رو يكبار ديگه تاكيد ميكنم دوست عزيز حتما فايل result.txt كه كنار برنامه قرار داره رو در آغاز هر عمليات جستجو يكبار پاك كنيد تا محتويات جستجو قبلي ديگه تو اون فايل وجود نداشته باشه.
براي پاك كردنش هم ميتونيد از پلاگين MicrobeFilesAndFolder استفاده كنيد.