פתיחת NOTEPADE ושליחת STRING

NORT

New member
פתיחת NOTEPADE ושליחת STRING

בתוכנית שלי אני צריך לפתוח בשלב כולשהו את תוכת NOTEPAD ולישלוח אליו STRING בעיברית ולהדפיס. ניסיתי לעסות את זה דרך ACTIVE X אבל זה לא מסתדר . מישהו יודע איך עושים את זה ?
 

galh

New member
לא עדיף להדפיס ישירות?

ActiveX לא יעבוד כי למיטב ידיעתי Notepad היא אפליקציה ולא רכיב COM. מה שאתה יכול לנסות זה למצוא את חלון ה- Edit שבתוך ה- Notepad ואז לשלוח לו הודעת WM_SETTEXT ואז הודעת WM_KEYDOWN ו- WM_KEYUP בשביל לדמות Ctrl-P (לא יעבוד אם הם בודקים את ה- Ctrl לחוץ עם GetKeyState). אם זה ממש ממש חובה לעשות את זה דרך Notepad אז אולי Hook עם Journal (לא זוכר את השם המדוייק) זה כיוון יותר טוב.
 

NORT

New member
בעיקרון אני רוצה לבצע הדפסה

של מידע, רציתי NOTEPAD כי שם זה נח לכתוב ולהדפיס ברור. אבל בעיקרון לא משנה לי באיזה עורך לעסות שימוש , ניסיתי להיתמש במחלקה CPrintDialog של MFC - אבל זה מאוד מסורבל , ועיברית יוצאת גיבריש . אולי אתה מכיר משהו של WIN32 API שמבצע הדפסה למדפסת ? איך אתה מיתכון למצא את חלון ה EDIT בתוך ה NOTEPAD ? איך עושים כזה דבר?
 

galh

New member
אז אתה נוסע לאילת דרך ק.שמונה?! ../images/Emo6.gif

בשביל להדפיס, אתה יוצר Device Context של מדפסת באמצעות הפונקציה:
CreateDC("WINSPOOL" ... );​
. לצערי אין לי דוגמא זמינה, אבל גוגל בטח ישמח לעזור. הבעיה של העברית כנראה קשורה לעובדה שלא "בחרת" פונט מתאים. בשביל למצוא HWND של חלון, יש את FindWindow ו- FindWindowEx.
 

NORT

New member
יצרתי , שניתי פונט

שיניתי את המחרוזת ל UNICODE , אבל עדין יוצא לי גיבריש. אז חשבתי על פיתרון אחר....דרך קירית שמונה.
 

זויברג

New member
עצה,

אם אתה מתעקש לגרד את האוזן עם הרגל, אז למה שלא תשמור את הטקטס שאתה רוצה לקובץ זמני, תעביר את הקובץ כפרמטר לNOTEPAD, ותוסיף את הפרמטר p/ שיאמר לNOTPAD להדפיס את הקובץ ישר... אח"כ פשוט תמחק את הקובץ הזמני ובא לציון גואל. אני אנסה שניה לכתוב לך תוכנית דוגמא פשוטה... חכה דקה...
 

זויברג

New member
הנה

FILE *fp; fp = fopen("C:\\temp\\temp.tmp","wt"); fputs("hello\n",fp); fputs("what's up",fp); fclose(fp); ShellExecute(NULL,"open","C:\\WINDOWS\\system32\\NOTEPAD.EXE","/p C:\\itamar\\temp.tmp","C:\\WINDOWS\\system32",1); remove("C:\\temp\\temp.tmp");​
 
למעלה