Option Explicit
#If VBA7 And Win64 Then
Declare PtrSafe Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare PtrSafe Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" ( _
ByVal hWnd1 As Long, ByVal hwnd2 As Long, ByVal lpsz1 As String, _
ByVal lpsz2 As String) As Long
Declare PtrSafe Function SendMessage Lib "user32.dll" Alias "SendMessageA" ( _
ByVal HWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
ByRef lParam As Any) As Long
Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal HWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Declare PtrSafe Function Wow64DisableWow64FsRedirection Lib "kernel32.dll" ( _
ByVal OldValue As Long) As Boolean
Declare PtrSafe Function Wow64EnableWow64FsRedirection Lib "kernel32.dll" ( _
ByVal IsEnable As Boolean) As Boolean
Declare PtrSafe Sub GetClientRect Lib "user32" _
(ByVal HWnd As Long, lpRect As RECT)
Declare PtrSafe Sub ClientToScreen Lib "user32" _
(ByVal HWnd As Long, lpPoint As POINT)
Declare PtrSafe Sub mouse_event Lib "user32" _
(ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, _
ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Declare PtrSafe Function SetCursorPos Lib "user32" _
(ByVal x As Long, ByVal y As Long) As Long
#Else
Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" ( _
ByVal hWnd1 As Long, ByVal hwnd2 As Long, ByVal lpsz1 As String, _
ByVal lpsz2 As String) As Long
Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" ( _
ByVal HWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
ByRef lParam As Any) As Long
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal HWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Declare Function Wow64DisableWow64FsRedirection Lib "kernel32.dll" ( _
ByVal OldValue As Long) As Boolean
Declare Function Wow64EnableWow64FsRedirection Lib "kernel32.dll" ( _
ByVal IsEnable As Boolean) As Boolean
Declare Sub GetClientRect Lib "user32" _
(ByVal HWnd As Long, lpRect As RECT)
Declare Sub ClientToScreen Lib "user32" _
(ByVal HWnd As Long, lpPoint As POINT)
Declare Sub mouse_event Lib "user32" _
(ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, _
ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Declare Function SetCursorPos Lib "user32" _
(ByVal x As Long, ByVal y As Long) As Long
#End If
Const SW_NORMAL As Long = 1
Const WM_SETTEXT As Long = &HC
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Type RECT
left As Long
top As Long
right As Long
bottom As Long
End Type
Type POINT
x As Long
y As Long
End Type
Sub Sticky_Note()
Dim Zone As RECT
Dim Pos As POINT
Dim New_note As Long
Dim StickyNot_Note_Window As Long
Dim DirectUIHWND_Window As Long
Dim CtrlNotifySink_Window As Long
Dim Montexte_Window As Long
Dim Montexte As String
Dim RetVal As Long
Dim tmp As Long
Dim Ligne As Long
Dim DerLig As Long
DerLig = Worksheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
For Ligne = 1 To DerLig
Montexte = Worksheets("Feuil1").Cells(Ligne, 1).Text
If Ligne = 1 Then
RetVal = Wow64DisableWow64FsRedirection(tmp)
RetVal = ShellExecute(0, "open", "stikynot", 0, 0, SW_NORMAL)
Wow64EnableWow64FsRedirection (True)
If RetVal = 2 Or RetVal = 3 Then Exit Sub
GoTo Trouver_fenetre_saisie
Else
New_note = FindWindow("Sticky_Notes_Note_Adornment", vbNullString)
GetClientRect New_note, Zone
Pos.x = Zone.left
Pos.y = Zone.top
ClientToScreen New_note, Pos
SetCursorPos Pos.x, Pos.y
mouse_event MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_LEFTUP, Pos.x, Pos.y, 0, 0
Sleep 100
Trouver_fenetre_saisie:
Do
DoEvents
StickyNot_Note_Window = FindWindow("Sticky_Notes_Note_Window", "Pense-bête")
Loop Until StickyNot_Note_Window > 2
Sleep 100
DirectUIHWND_Window = FindWindowEx(StickyNot_Note_Window, 0&, "DirectUIHWND", vbNullString)
CtrlNotifySink_Window = FindWindowEx(DirectUIHWND_Window, 0&, "CtrlNotifySink", vbNullString)
Montexte_Window = FindWindowEx(CtrlNotifySink_Window, 0&, "{a64c3a50-b714-4e1f-a723-78db57a20a29}", vbNullString)
End If
SendMessage Montexte_Window, WM_SETTEXT, 0, ByVal Montexte
Next Ligne
End Sub