Проста програмка за търсене на думи в MS Word файлове. Програмата е само за 32-bit Windows. Тествана е само под WinXP, но може би ще работи и под други OS.
Писана само за трнировка. Разполага само с базови възможности. Би могло да и се добавят доста повече опции, като рекурсивно преравяне на директории, търсене на кирилица, търсене с регулярни изрази, запазване на резултата в текстов файл и т.н. Към момента ги няма тия дивотии, но ако ми текне музата някой ден може и да я пооправя. Използвал съм 2 езика за програмиране – AutoIt и Perl. Използвах компилатор-пакетера pp, за да компилирам Perl-файла.
Програмата е с отворен код и ако на някой му се занимава, може да си я пипне. Изглежда така:
Сорс кода:
AutoIt-файла
#include #include #include #include #include #include Local $line $Form1 = GUICreate("Search in word files", 621, 473, 192, 124) $Label2 = GUICtrlCreateLabel("Text to Find", 8, 13, 60, 23) $Rezult = GUICtrlCreateEdit("", 8, 64, 609, 369) ; GUICtrlSetData(-1, "Edit1") $String = GUICtrlCreateInput("", 80, 8, 393, 21) $SelectDir = GUICtrlCreateButton("Select Dir", 8, 32, 65, 25) $Directory = GUICtrlCreateInput("", 80, 32, 393, 21) $Search = GUICtrlCreateButton("SEARCH", 480, 8, 137, 49) $Help = GUICtrlCreateButton("?", 584, 440, 25, 25) $Label1 = GUICtrlCreateLabel("--==[ Programming by Nedialko Voinigovski ]==--", 8, 448, 444, 17) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $SelectDir _seldir() Case $Search _search() Case $Help _help() EndSwitch WEnd func _seldir() $outfolder = FileSelectFolder("Choose a folder.", "") GUICtrlSetData($Directory, $outfolder) EndFunc func _search() $command = @comspec & ' /c ws.exe' & ' "' & GUICtrlRead($String) & '"' & ' "' & GUICtrlRead($Directory) & '"' $cmd = Run($command, @WorkingDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) $line = "Wait ..." & @CRLF While 1 $line &= StdoutRead($cmd) If @error <> 0 Then ExitLoop Sleep(1000) GUICtrlSetData($Rezult, $line) WEnd $line &= "--------------------------" & @CRLF & "All done!" GUICtrlSetData($Rezult, $line) EndFunc func _help() MsgBox(0,"HELP","Програмата е комбинация от езиците за програмиране" &@CRLF& "AutoIt (за графичната част) и Perl (за ровичкането в Word-файловете)." &@CRLF&"Има възможност да се използват PCRE (perl регулярни изрази) за търсене в файловете, но " &@CRLF&"все още липсва добра поддръжка на кирилица."&@CRLF&@CRLF&"За да работи всичко нормално трябва и двете exe-та да са в една директория.") EndFunc |
Perl-файла, който върши съществената работа:
use Win32::OLE; use Win32::OLE::Enum; use Cwd 'abs_path'; $dir = $ARGV[1]; chdir $dir; @files = <*.doc *.docx>; $find = $ARGV[0]; foreach $file (@files) { $doc = Win32::OLE -> GetObject(abs_path($file)); open (FH,">jgfd75w43589azwq210"); $paragraphs = $doc->Paragraphs(); $enumerate = new Win32::OLE::Enum($paragraphs); while(defined($paragraph = $enumerate->Next())){ $text = $paragraph->{Range}->{Text}; print FH "$text\n"; } $doc->Close; close FH; open (FH,"<jgfd75w43589azwq210"); while ($line = ) { if($line =~ m/$find/i){ print "$find\t-->\t$ARGV[1]\\$file\n"; last; } } close FH; unlink("jgfd75w43589azwq210"); } |
Пакетите за Perl, които ми бяха необходими за компилирането:
gcc environment - 3.4.5 (mingw-vista special r3) PAR Packager, version 1.009 (PAR version 1.002)
Компилирането на Perl стана елементарно. Просто написах в промпта:
pp search_in_word.pl |
Програмата може да се изтегли от тук: MS Word Search
Здравейте,
видях вашия сайт и нещата тук ме грабнаха!
Аз също се интересувам и занимавам с програмиране и други неща, но в някои от тях съм начинаещ.
Хареса ми програмката Ви за запазване на съобщенита във Viber.
Във връзка с това имам една молба:
Тъй като аз съм човек с намалено зрение и трудно виждам дребните и мъгляви букви във Viber искам да попитам има ли начин темите в него да бъдат сменени (като шрифт, големина, цвят и др), ако не по нормалния начин чрез интерфейса на програмата то в папката й?
Виждам че там има разни файлове viber.db и други, но не откривам xml или json файл където те да са записани. Ако има начин, ще Ви бъда благодарен ако ми пишете.
Извинявам се, че пиша писмо чрез формата за отговор, но никъде не видях Ваши данни за контакт (а може и да съм ги пропуснал, поради моето намалено зрение).
Благодаря предварително!
Илия
Хммм.. Явно никой не може да ми даде отговор. благодаря за вниманието все пак!
Останете със здраве!