מפרשי האוצר
חיפוש גוגל בפורום:

הסבר על ההרחבות

סמל אישי של המשתמש
אוצר החכמה
מנהל האתר
הודעות: 17371
הצטרף: ב' מאי 03, 2010 5:49 pm

הסבר על ההרחבות

הודעהעל ידי אוצר החכמה » ג' מרץ 05, 2013 12:01 pm

אני מתחיל לכתוב כאן הסבר על האפשרות להוסיף הרחבות לאוצר החכמה, גירסה 11 ואילך.

זה נושא חדש ומתפתח באוצר כרגע כך שעתידים להיות עדכונים כל הזמן לדברים הכתובים כאן. אשתדל לשמור על הדברים מעודכנים. וכדאי תמיד לפתח עם הגירסה האחרונה של התכנה.

ההרחבות: ההרחבות באוצר החכמה הינם תכנות אשר אוצר החכמה פונה אליהם בנקודות מסויימות ויוצר קשר דו כיווני איתם.
בעיקרון ההרחבות הן משני סוגים קבצי תכנה (EXE) וקבצי (DLL) עד עכשיו בעיקר ניסינו קבצי תכנה כך שבינתיים הייתי ממליץ להשתמש רק באלו, ואת התיעוד ל DLL אשאיר לשלב מאוחר יותר.

קבצי תכנה (EXE)
1. תכנה שאינה מתקשרת עם משתמש.
תכנה מסוג זה משאירה את התקשורת עם המשתמש לאוצר, ואינה נשארת זמן רב בפעולה.
שיטת העבודה היא כזאת, המפתח יוצר תכנה ומודיע לאוצר החכמה מתי להפעילה, (הסבר כיצד להודיע יופיע בקטע אודות ההתקנה של ההרחבה) לפני הפעלת התכנה האוצר מכין קובץ טקסט בשם INPUT.TXT ובו הוא מודיע לתכנה על מצב האוצר ברגע זה.
הגדרת הנתונים אותם ימסור האוצר בקובץ מוגדרת בזמן ההתקנה.
התכנה קוראת את הקובץ ומייצאת את התשובות לקובץ בשם OUTPUT.TXT
קובץ זה נקרא ע"י האוצר, והאוצר ממשיך לפעול לפי הנתונים הכתובים בו.

תכנה זו יכולה להיות מופעלת ע"י תפריט, או בזמן אירוע מסויים, דוגמה לדבר הוא אירוע של לפני ביצוע החיפוש, במקרה כזה התכנה יכולה לשנות את התוכן של המילים אותם האוצר יחפש. (כגון הוספת חיפוש ע"י ++ ). בדוגמאות אביא בעז"ה דוגמא לפסוידו קוד לתכנה כזאת.
לתכנה כזאת האוצר ממתין כלומר אחרי הפעלתה, תכנת האוצר קופאת וממתינה עד שהתכנה הזאת תסיים את פעילותה ורק עם החזרת התשובה האוצר ממשיך לעבוד. לכן חשוב שתכנות אלה יהיו בעלות משך פעולה קצק יחסית.


2. הסוג השני של תכנות הן תכנות שמופעלות ע"י האוצר אולם הן פועלות במקביל לאוצר. דוגמא לתכנה כזאת היא תכנת ייבוא ה PDF שבעוד שהיא רצה אפשר לחזור לאוצר ולהמשיך לעבוד בו.
גם תכנות אלו מקבלות את הנתונים הדרושים להם ע"י הקובץ INPUT.TXT, אולם הן מפעילות ופונות לאוצר, ע"י התכתבות עמו דרך מנגנון של הודעות.

המשך יבא בעז"ה מחר

סמל אישי של המשתמש
אוצר החכמה
מנהל האתר
הודעות: 17371
הצטרף: ב' מאי 03, 2010 5:49 pm

Re: הסבר על ההרחבות

הודעהעל ידי אוצר החכמה » א' מרץ 10, 2013 9:49 am

הגישה בתכנה כזאת לאוצר מתבצע ע"י התהליך הבא
יצירת קובץ הוראות ושמירתו.
פנייה לתכנה באמצעות sendmessage של WINDOWS API
קריאת קובץ התשובות.

הדבר יכול להעשות גם מתכנה חיצונית לגמרי שלא הופעלה ע"י ההרחבה. במקרה כזה התכנה הזאת צריכה לזהות בעצמה את מספר החלון של הOTZAR כדי לשלוח לו הודעות אתחיל בדוגמה לתכנה כזאת
כדי שיהיה קל להבין אני מעתיק כאן דוגמה לכמה שורות שכתבתי ב VB בתוך WORD כך שאפשר להריץ את זה בוורד ולראות איך זה עובד
כדי לראות היטב כדאי כמובן ללחוץ CTRL+SHIFT שמאלי

בשורות הראשונות יש הגדרות של ההפניות ל WINDOWS השורה בהערה היא ל 32BIT והשנייה היא ל 64BIT שזו המערכת שבה ניסיתי את זה אם החלונות הן בגירסת 32BIT יש להפוך את המצב.

כדי לנסות את זה צריך להוריד את הגירסה הלא רשמית של התכנה
כמו שהוסבר כאן
http://www.otzar.org/forums/viewtopic.php?f=5&t=12629&p=120190#p120100

כל הפקודות שם ניתנות להפעלה חלקן עשיתי כהערה כיוון שאי אפשר להפעילן בו זמנית


'Public Declare Function SendMessageA Lib "user32" (ByVal hWnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Public Declare PtrSafe Function SendMessageA Lib "user32" (ByVal hWnd As LongPtr, ByVal wMsg As Long, _
ByVal wParam As LongPtr, lParam As Any) As LongPtr
'Private Declare Function FindWindow Lib "USER32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr

Private Sub writeq()

Dim sFileText As String
Dim iFileNo As Integer
iFileNo = FreeFile
'open the file for writing
Open "C:\otzar\PQ0.TXT" For Output As #iFileNo


'write some example text to the file
Print #iFileNo, "getcurlistcount=""
Print #iFileNo, "getcurlistrow="
Print #iFileNo, "getcurlistrowbookid(5)="
Print #iFileNo, "getbookname(10)="
Print #iFileNo, "getbookauthor(10)="
Print #iFileNo, "getfulltextsearchstring="
Print #iFileNo, "getbooksearchstring="
Print #iFileNo, "getauthorsearchstring="
Print #iFileNo, "setcurlistrow=12;"
Print #iFileNo, "setfulltextsearchstring=test"
Print #iFileNo, "setbooksearchstring=test"
Print #iFileNo, "setauthorsearchstring=test"
' Print #iFileNo, "dofulltextsearch="
' Print #iFileNo, "openbook=2"
' Print #iFileNo, "getsearchresultcount="
' Print #iFileNo, "getsearchresulttrow="
' Print #iFileNo, "getsearchresultbookid(1)="
' Print #iFileNo, "setsearchresultrow=3"
' Print #iFileNo, "opensearchresultrow=1"


'close the file (if you dont do this, you wont be able to open it again!)
Close #iFileNo
End Sub

Private Sub Readrslt()


Dim sFileText As String
Dim iFileNo As Integer
iFileNo = FreeFile
'open the file for reading
Open "C:\otzar\PQR0.TXT" For Input As #iFileNo
'change this filename to an existing file!

'read the file until we reach the end
Do While Not EOF(iFileNo)
Input #iFileNo, sFileText
Selection.TypeText Text:=sFileText
Selection.TypeParagraph
Loop

'close the file (if you dont do this, you wont be able to open it again!)
Close #iFileNo


End Sub

Sub Macro5()
Dim n As LongPtr
Dim r As LongPtr




n = FindWindow("TOtzarMainForm", vbNullString)
If n > 0 Then
writeq

r = SendMessageA(n, 2048, 0, 0)

Readrslt


End If


End Sub

סמל אישי של המשתמש
אוצר החכמה
מנהל האתר
הודעות: 17371
הצטרף: ב' מאי 03, 2010 5:49 pm

Re: הסבר על ההרחבות

הודעהעל ידי אוצר החכמה » א' מרץ 10, 2013 9:57 am

עשיתי גם תכנה שמדגימה את הפעלת ההוראות האלה
אפשר להוריד אותה כאן

http://80.179.48.194/pq.zip

סמל אישי של המשתמש
אוצר החכמה
מנהל האתר
הודעות: 17371
הצטרף: ב' מאי 03, 2010 5:49 pm

Re: הסבר על ההרחבות

הודעהעל ידי אוצר החכמה » א' מרץ 10, 2013 10:19 am

מספר רעיונות לפיתוח.

הרצת חיפוש של מילים מסומנות בוורד.

שאיבת של רשימת שמות הספרים בתוצאות החפוש רשימת בתכנה או בוורד ופתיחת חלק מהם

יצירת קיצור דרך שפותח קבוצה של ספרים

יצירת רשימת ספרים מאורגנת באופן לגמרי שונה מאשר שהאוצר נותן ותצוגה מקדימה או פתיחה של כל אחד מהם לפי בחירה

סמל אישי של המשתמש
אוצר החכמה
מנהל האתר
הודעות: 17371
הצטרף: ב' מאי 03, 2010 5:49 pm

Re: הסבר על ההרחבות

הודעהעל ידי אוצר החכמה » א' מרץ 10, 2013 10:20 am

בעז"ה בהמשך אוסיף הסבר על נושא האירועים

סמל אישי של המשתמש
רחמים
הודעות: 1633
הצטרף: ג' נובמבר 01, 2011 12:28 pm
מיקום: http://yakobov-dev.co.il/
יצירת קשר:

Re: הסבר על ההרחבות

הודעהעל ידי רחמים » א' מרץ 10, 2013 1:16 pm

אוצר החכמה כתב:עשיתי גם תכנה שמדגימה את הפעלת ההוראות האלה
אפשר להוריד אותה כאן

http://80.179.48.194/pqexample.zip


אפשר את הקוד מקור של זה?

סמל אישי של המשתמש
אוצר החכמה
מנהל האתר
הודעות: 17371
הצטרף: ב' מאי 03, 2010 5:49 pm

Re: הסבר על ההרחבות

הודעהעל ידי אוצר החכמה » ג' מרץ 12, 2013 1:55 pm

הסבר קצר על איך מוסיפים הרחבה
צריך ליצור קובץ טקסט עם הסיומת OINF ואז יכול המשתמש להתקין את זה ע"י התוסף של התקנת הרחבות.
כל הקבצים של ההרחבה יהיו בספריה מסויימת (אליה יחולצו למשל מתוך ZIP וכדומה) והמשתמש יצביע על הספריה הזאת בשעת ההתקנה והתכנה תתקין את זה.

הנה דוגמה לקובץ כזה, (זה הקובץ של ההרחבה של ייבוא קבצי PDF לתכנה)

files=runpdfapp.exe,userbooks.db3,bgmenugradientr2.gif,callsqlite.dll,icsharpcode.sharpziplib.dll,includefiles.exe,includefiles.db3,indexdb.db3,indexerrorslog.txt,mudraw.exe,open_book_o.gif,pdfimporthelp.html,pdfinfo.exe,pdfu.dll,sfiles.dll,sqlite3.dll,udx.dll
plugin name=IMPORTPDF
menu=יבא קבצי PDF
modulename=includefiles.exe
description=יבא קבצי PDF^והוסף אותם לרשימת ספרי האוצר
wait=0
inparams=root,programdir

הסבר על השורות:
FILES מודיעה לתכנת ההתקנה איזה קבצים הוא צריך להתקין
description הוא התיאור שיראה המשתמש בתכנת ההתקנה.
PLUGIN NAME הוא השם של התכנה מבחינת אוצר החכמה
menu הוא התפריט אותו יראה המשתמש בתפריט ההרחבות. כמו שכתבתי במקום אחר אם מוסיפים ^ ושם של מקש, המקש הזה יהיה המקש החם
modulename הוא שם התכנה שצריכה להיות מופעלת
wait מגדיר אם התכנה היא תכנה שהאוצר צריך להמתין לה ולפעול לפי ה OUTPUT שלה
inparams מגדיר איזה אינפורמציה תקבל התכנה מהאוצר במקרה הזה התכנה מבקשת את ה root כלומר הכינוי של דיסק אוצר החכמה (E:\,F:\) ואת המיקום של תכנת אוצר החכמה בעצמה

סמל אישי של המשתמש
אוצר החכמה
מנהל האתר
הודעות: 17371
הצטרף: ב' מאי 03, 2010 5:49 pm

Re: הסבר על ההרחבות

הודעהעל ידי אוצר החכמה » ג' מרץ 12, 2013 7:21 pm

ראו כאן עוד כמה תוספות בעניין
http://www.otzar.org/forums/viewtopic.php?f=7&t=12907#p120691

סמל אישי של המשתמש
אוצר החכמה
מנהל האתר
הודעות: 17371
הצטרף: ב' מאי 03, 2010 5:49 pm

Re: הסבר על ההרחבות

הודעהעל ידי אוצר החכמה » ב' מרץ 18, 2013 5:56 pm

כפי שכתבתי תיקנתי את פתיחת ספר ע"י openbook והספר מוצג עם שמו ושם המחבר כמו כל ספרי האוצר
כן הוספתי אפשרות לכתוב את שם העמוד אותו רוצים לפתוח לדוגמא
openbook=2,p0039R.LST
יפתח את הספר בעמוד 75.

סמל אישי של המשתמש
אוצר החכמה
מנהל האתר
הודעות: 17371
הצטרף: ב' מאי 03, 2010 5:49 pm

Re: הסבר על ההרחבות

הודעהעל ידי אוצר החכמה » ב' מרץ 18, 2013 5:57 pm

פקודה חדשה
getopenbooks=

מחזירה את רשימת הספרים הפתוחים ואת העמודים בהם הם נמצאים כרגע.

צמא לדעת
הודעות: 298
הצטרף: א' ספטמבר 11, 2011 4:48 pm

Re: הסבר על ההרחבות

הודעהעל ידי צמא לדעת » ה' אפריל 18, 2013 7:16 pm

אוצר החכמה כתב:תכנה זו יכולה להיות מופעלת ע"י תפריט, או בזמן אירוע מסויים, דוגמה לדבר הוא אירוע של לפני ביצוע החיפוש, במקרה כזה התכנה יכולה לשנות את התוכן של המילים אותם האוצר יחפש. (כגון הוספת חיפוש ע"י ++ ). בדוגמאות אביא בעז"ה דוגמא לפסוידו קוד לתכנה כזאת.


אשמח ללמוד כיצד מפעילים הרחבה בזמן אירוע מסויים.

סמל אישי של המשתמש
אוצר החכמה
מנהל האתר
הודעות: 17371
הצטרף: ב' מאי 03, 2010 5:49 pm

Re: הסבר על ההרחבות

הודעהעל ידי אוצר החכמה » ה' אפריל 18, 2013 9:00 pm

הנה דוגמה לאירוע עליו דברנו באשכול אחר, עם תחילת החיפוש.
[FSEARCH]
events=BEFORESEARCH
modulename=%PROGRAMDIR%\FSPI.exe
inparams=searchstring
outparams=searchstring

זו דוגמה ל INI file אבל זה יעבוד באותה מידה גם דרך ה xml

צמא לדעת
הודעות: 298
הצטרף: א' ספטמבר 11, 2011 4:48 pm

Re: הסבר על ההרחבות

הודעהעל ידי צמא לדעת » ג' דצמבר 08, 2020 12:17 am

אוצר החכמה כתב:הסבר קצר על איך מוסיפים הרחבה


האם זה עדיין אמור לעבוד בגירסה 18? כי ניסיתי להוסיף הרחבה, הן דרך oinf והן דרך PLUGIN.xml, ולא עלתה בידי.

צמא לדעת
הודעות: 298
הצטרף: א' ספטמבר 11, 2011 4:48 pm

הודעהעל ידי צמא לדעת » ג' דצמבר 08, 2020 12:47 am

מצאתי. יש לערוך את plugin.INI דייקא.


חזור אל “אוצר החכמה - תמיכה טכנית”



מי מחובר

משתמשים הגולשים בפורום זה: אין משתמשים רשומים ו־ 29 אורחים