@חד-בדרי כתב:
אשמח אם תוכל לעלות את האופציות הנוספות (פשוט לא פתוח לי ג'מיני)
Spoiler
יצירת סימן מים קבוע (Watermark) שמוצג תמיד מעל כל החלונות, אך מאפשר לעכבר "ללחוץ דרכו" (Click-through), היא פתרון מעולה עבור יוצרי תוכן, מרצים, או מי שרוצה להגן על המרקע שלו מפני גניבת זכויות יוצרים בזמן אמת.
לפניך המדריך המלא, המקיף והמפורט ביותר לביצוע המשימה בשלוש דרכים שונות.
1. הקדמה טכנולוגית: איך עובד "חלון רפאים"?
כדי ליצור חלון שצף מעל הכל אך אינו מפריע לעבודה השוטפת, אנו משתמשים בשילוב של PowerShell (שפת הסקריפטים של ווינדוס) ו-WPF (Windows Presentation Foundation) – תשתית גרפית מתקדמת מבית מיקרוסופט.
"חלון רפאים" כזה מבוסס על שלושה מאפייני מפתח במערכת ההפעלה:
Topmost (עליון תמיד): מאלץ את החלון להישאר בשכבה הגבוהה ביותר של שולחן העבודה, מעל דפדפנים, משחקים או תוכנות עריכה.
AllowsTransparency + WindowStyle="None": מעלים את המסגרת הרגילה של ווינדוס (כפתורי ה-X, הגדלה ומזעור) ומאפשר רק לתוכן הגרפי (הטקסט או התמונה) להופיע, כאשר הרקע סביבו שקוף לחלוטין.
Extended Window Styles (WS_EX_TRANSPARENT / E0x20): זוהי "נוסחת הקסם" ברמת ה-Windows API. היא מודיעה למערכת ההפעלה שהחלון משמש לתצוגה בלבד, ולכן כל לחיצת עכבר או תנועה "תחלוף דרכו" ישירות אל החלון שנמצא מאחוריו.
2. אפשרות 1: הסקריפט המשולב והמתקדם ב-PowerShell (השיטה המומלצת)
שיטה זו אינה דורשת התקנת תוכנות צד שלישי. הקוד הבא משלב טקסט ותמונה יחד בתוך מכולה גרפית אחת (StackPanel).
בחלקו העליון של הקוד תמצא "לוח בקרה" נוח המאפשר לך להתאים אישית את כל הפרמטרים.
הקוד המלא לעתקה (watermark.ps1) :
# ==========================================
# לוח בקרה והגדרות סימן המים
# ==========================================
$PositionX = 20 # מיקום אופקי מהפינה השמאלית (בפיקסלים)
$PositionY = 20 # מיקום אנכי מהפינה העליונה (בפיקסלים)
$WatermarkText = "כל הזכויות שמורות © 2026" # הטקסט שיוצג
$FontSize = 24 # גודל הגופן של הטקסט
$TextColor = "White" # צבע הטקסט (למשל: White, Red, #FFFF0000)
$ImagePath = "C:\path\to\your\logo.png" # נתיב מלא לתמונת הלוגו (השאר ריק "" אם אין תמונה)
$ImageHeight = 50 # גובה התמונה בפיקסלים (הרוחב ישתנה פרופורציונלית)
$GlobalOpacity = 0.5 # שקיפות כללית של כל חלון הרפאים (בין 0.1 ל-1.0)
# ==========================================
# טעינת ספריות גרפיות של ווינדוס
Add-Type -AssemblyName PresentationFramework, PresentationCore, WindowsBase
# הגדרת מבנה ה-XAML (ממשק המשתמש)
[xml]$xaml = @"
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WatermarkWindow" Height="Auto" Width="Auto"
WindowStyle="None" AllowsTransparency="True" Background="Transparent"
Topmost="True" ShowInTaskbar="False" Opacity="$GlobalOpacity">
<StackPanel Name="Container" Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Top">
<Image Name="WpImg" Height="$ImageHeight" HorizontalAlignment="Left" Margin="0,0,0,5"/>
<TextBlock Name="WpText" Text="$WatermarkText" FontSize="$FontSize" Foreground="$TextColor" FontWeight="Bold"/>
</StackPanel>
</Window>
"@
# יצירת החלון
$reader = New-Object System.Xml.XmlNodeReader $xaml
$Window = [Windows::Markup::XamlReader]::Load($reader)
# טיפול בתמונה במידה והוזן נתיב תקין
$WpImg = $Window.FindName("WpImg")
if ($ImagePath -and (Test-Path $ImagePath)) {
$bitmap = New-Object System.Windows.Media.Imaging.BitmapImage
$bitmap.BeginInit()
$bitmap.UriSource = [Uri]$ImagePath
$bitmap.EndInit()
$WpImg.Source = $bitmap
} else {
$WpImg.Visibility = [System.Windows.Visibility]::Collapsed
}
# הגדרת מיקום החלון על המסך
$Window.Left = $PositionX
$Window.Top = $PositionY
# הזרקת קוד Win32 API כדי לאפשר לעכבר ללחוץ דרך החלון (Click-Through)
$Window.Add_SourceInitialized({
$hwnd = (New-Object System.Windows.Interop.WindowInteropHelper($Window)).Handle
# הגדרות מערכת לחלונות שקופים
$extendedStyle = [User32]::GetWindowLong($hwnd, -20)
# 0x20 = WS_EX_TRANSPARENT (לחיצה דרך החלון), 0x80000 = WS_EX_LAYERED (שכבות מורכבות)
[User32]::SetWindowLong($hwnd, -20, $extendedStyle -bor 0x20 -bor 0x80000)
})
# הגדרת פונקציות ה-API הדרושות ב-PowerShell
$signatures = @"
using System;
using System.Runtime.InteropServices;
public class User32 {
[DllImport("user32.dll")]
public static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
}
"@
Add-Type -TypeDefinition $signatures
# הצגת החלון על המסך
$Window.ShowDialog() | Out-Null
3. מדריך שלב-אחר-שלב להפעלת ה-PowerShell
כדי שהסקריפט יעבוד כמו שצריך (ובמיוחד כדי שהעברית לא תישבר), עקוב במדויק אחר השלבים הבאים:
יצירת הקובץ: פתח את תוכנת פנקס רשימות (Notepad), והדבק בתוכה את הקוד שלעיל.
שמירה נכונה (קריטי לעברית): * לחץ על קובץ -> שמירה בשם....
בשדה שמור כסוג, בחר כל הקבצים (.).
בשם הקובץ כתוב: watermark.ps1.
בשדה קידוד (Encoding), בחר ב-UTF-8 (אם תבחר בקידוד אחר, הטקסט בעברית יהפוך לסימני שאלה או ג'יבריש).
אישור הרשאות במערכת (חד-פעמי): חלונות חוסמת כברירת מחדל הרצת סקריפטים. כדי לאפשר זאת:
לחץ על התחל, הקלד PowerShell.
קליק ימני על Windows PowerShell ובחר הפעל כמנהל (Run as Administrator).
הקלד או הדבק את הפקודה הבאה ולחץ Enter:
Set-ExecutionPolicy RemoteSigned -Force
כעת תוכל לסגור את החלון הזה.
הפעלת הסקריפט: לחץ קליק ימני על קובץ ה-watermark.ps1 ששמרת, ובחר הפעל באמצעות PowerShell (Run with PowerShell).
4. אפשרות 2: סקריפט AutoHotkey (v2)
אם אתה מעדיף פתרון קליל עוד יותר באמצעות התוכנה הפופולרית AutoHotkey, להלן קוד מעודכן לחלוטין לגרסה החדשה והיציבה AutoHotkey v2.
מדריך התקנה מהיר:
הורד והתקן את הגרסה העדכנית מאתר AutoHotkey המקורי (בחר בגרסה v2).
לחץ קליק ימני במקום ריק בשולחן העבודה -> New -> AutoHotkey Script.
לחץ קליק ימני על הקובץ שנוצר, בחר בעריכה (Edit Script) והדבק את הקוד הבא:
#Requires AutoHotkey v2.0
#SingleInstance Force
; הגדרות סימן המים
WatermarkText := "כל הזכויות שמורות © 2026"
TextColor := "White"
FontSize := "s24" ; האות s מייצגת Size
PositionX := 20
PositionY := 20
OpacityValue := 128 ; שקיפות מ-0 (שקוף לגמרי) עד 255 (אטום לגמרי)
; יצירת חלון גרפי (GUI)
; +AlwaysOnTop = עליון תמיד
; -Caption = ללא מסגרת חלון
; +E0x20 = קוד ה-Win32 למעבר עכבר חופשי (Click-through)
MyGui := Gui("+AlwaysOnTop -Caption +Owner +E0x20 +LastFound")
MyGui.BackColor := "111111" ; צבע רקע זמני (יעלם בזכות ה-TransColor)
; הגדרת הגופן והטקסט
MyGui.SetFont(FontSize " c" TextColor " Bold", "Segoe UI")
MyGui.Add("Text",, WatermarkText)
; הפיכת רקע החלון לשקוף לחלוטין וקביעת שקיפות הטקסט
WinSetTransColor("111111 " OpacityValue, MyGui)
; הצגת החלון במיקום המוגדר ללא קבלת פוקוס מהמקלדת (NoActivate)
MyGui.Show("X" PositionX " Y" PositionY " NoActivate")
שמור את הקובץ והפעל אותו בלחיצה כפולה.
5. אפשרות 3: תוכנות גרפיות מוכנות
אם אינך רוצה להתעסק עם קוד כלל, קיימות תוכנות ייעודיות שפותחו בדיוק למטרה זו.
תוכנות מומלצות:
Custom Desktop Logo: תוכנה ותיקה וחינמית המאפשרת להציג קובצי PNG על המסך. היא תומכת בשינוי מיקום ושקיפות.
ScreenWatermark: כלי מקצועי ומודרני יותר המאפשר ליצור שכבות מרובות של סימני מים (טקסטים דינמיים כמו תאריך ושעה, או לוגו חברה) על פני מספר מסכים במקביל.
טבלת השוואה: יתרונות וחסרונות
פרמטר
סקריפטים (PowerShell / AHK)
תוכנות מוכנות (Custom Desktop Logo וכדומה)
צריכת משאבים
אפסית. הסקריפטים רצים ישירות על תהליכי מערכת בסיסיים וכמעט ולא צורכים זיכרון.
בינונית. תוכנות אלו רצות ברקע כיישום מלא ועשויות להעמיס מעט יותר על המעבד.
חסימת עכבר
אין בכלל. הקוד חוסם את החלון פיזית ומאלץ את העכבר ללחוץ דרכו.
עלולה להתרחש. תוכנות ישנות שלא עודכנו לעיתים סובלות מבאגים שבהם העכבר "נתקע" על הלוגו.
גמישות ועיצוב
דורש שינוי ערכים ידני בקוד (פחות מתאים למי שמפחד מקוד).
ממשק גרפי נוח (GUI) עם כפתורים, גרירה עם העכבר ושינוי הגדרות בקליק.
6. הפעלה אוטומטית וכיבוי של סימן המים
איך לגרום לסימן המים לעלות אוטומטית עם הדלקת המחשב?
ווינדוס מחזיקה תיקייה סודית שכל קיצור דרך שנזרק אליה מופעל אוטומטית בעת הפעלת המערכת.
לחץ על שילוב המקשים Windows + R במקלדת לפתיחת חלונית ה"הפעלה" (Run).
הקלד במדויק את הפקודה הבאה ולחץ Enter:
shell:startup
תיקיית "הפעלה" (Startup) תיפתח.
עבור AutoHotkey: פשוט צור קיצור דרך (Shortcut) לקובץ ה-.ahk שלך וגרור אותו לתיקייה זו.
עבור PowerShell: מאחר וקובצי פאוורשל דורשים הרשאה מיוחדת, מומלץ ליצור קובץ טקסט חדש בתיקייה זו, לקרוא לו start_watermark.bat (סיומת BAT), ולכתוב בתוכו את השורה הבאה שתעיר את הסקריפט שלך בשקט:
powershell.exe -windowstyle hidden -file "C:\path\to\your\watermark.ps1"
(החלף את הנתיב בנתיב האמיתי שבו שמרת את הסקריפט).
איך מכבים את סימן המים באופן זמני?
אם השתמשת ב-PowerShell:
פתח את מנהל המשימות (Ctrl + Shift + Esc), חפש ברשימה את Windows PowerShell, לחץ עליו קליק ימני ובחר סיום משימה (End Task).
אם השתמשת ב-AutoHotkey:
בשורת המשימות (ליד השעון מלמטה), חפש את האייקון הירוק עם האות H. לחץ עליו קליק ימני ובחר Exit.
אל תקפצו לי "תקרא חוקי הפורום", רק הבאתי מה שיש בקישור ש @הערשלה שלח...