@@ -121,6 +121,9 @@ WCHAR szNewTicketURL[300];
121
121
// Agent logfile
122
122
WCHAR szLogfile[MAX_PATH];
123
123
124
+ // Enable screenshot capture
125
+ BOOL bNewTicketScreenshot = TRUE ;
126
+
124
127
// Global string buffer
125
128
WCHAR szBuffer[256 ];
126
129
DWORD dwBufferLen = sizeof (szBuffer) / sizeof (WCHAR);
@@ -812,6 +815,14 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance
812
815
wsprintf (szNewTicketURL, L" %s/front/ticket.form.php" , szServer);
813
816
}
814
817
}
818
+
819
+ // Get new ticket screenshot enable
820
+ DWORD dwNewTicketScreenshotTmp = NULL ;
821
+ DWORD dwNewTicketScreenshotLen = sizeof (dwNewTicketScreenshotTmp);
822
+ lRes = RegQueryValueExW (hk, L" NewTicket-Screenshot" , 0 , NULL , (LPBYTE)&dwNewTicketScreenshotTmp, &dwNewTicketScreenshotLen);
823
+ if (lRes == ERROR_SUCCESS) {
824
+ bNewTicketScreenshot = (dwNewTicketScreenshotTmp == 1 );
825
+ }
815
826
}
816
827
817
828
RegCloseKey (hk);
@@ -938,36 +949,43 @@ LRESULT CALLBACK SettingsDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM
938
949
// Initialize dialog strings
939
950
LoadString (hInst, IDS_SETTINGS, szBuffer, dwBufferLen);
940
951
SetWindowText (hWnd, szBuffer);
941
- LoadString (hInst, IDS_SETTINGS_NEWTICKETURL, szBuffer, dwBufferLen);
942
- SetDlgItemText (hWnd, IDC_GROUPBOX_NEWTICKETURL, szBuffer);
952
+ LoadString (hInst, IDS_SETTINGS_NEWTICKET, szBuffer, dwBufferLen);
953
+ SetDlgItemText (hWnd, IDC_SETTINGS_GROUPBOX_NEWTICKET, szBuffer);
954
+ LoadString (hInst, IDS_SETTINGS_NEWTICKET_URL, szBuffer, dwBufferLen);
955
+ SetDlgItemText (hWnd, IDC_SETTINGS_TEXT_NEWTICKET_URL, szBuffer);
956
+ LoadString (hInst, IDS_SETTINGS_NEWTICKET_SCREENSHOT, szBuffer, dwBufferLen);
957
+ SetDlgItemText (hWnd, IDC_SETTINGS_CHECKBOX_NEWTICKET_SCREENSHOT, szBuffer);
943
958
LoadString (hInst, IDS_CANCEL, szBuffer, dwBufferLen);
944
- SetDlgItemText (hWnd, IDC_BTN_CANCEL , szBuffer);
959
+ SetDlgItemText (hWnd, IDC_SETTINGS_BTN_CANCEL , szBuffer);
945
960
LoadString (hInst, IDS_SAVE, szBuffer, dwBufferLen);
946
- SetDlgItemText (hWnd, IDC_BTN_SAVE , szBuffer);
961
+ SetDlgItemText (hWnd, IDC_SETTINGS_BTN_SAVE , szBuffer);
947
962
948
963
// Fill values
949
- SendDlgItemMessage (hWnd, IDC_SETTINGS_EDIT_NEWTICKETURL, WM_SETTEXT, 0 , (LPARAM)szNewTicketURL);
964
+ SendDlgItemMessage (hWnd, IDC_SETTINGS_EDIT_NEWTICKET_URL, WM_SETTEXT, 0 , (LPARAM)szNewTicketURL);
965
+ SendDlgItemMessage (hWnd, IDC_SETTINGS_CHECKBOX_NEWTICKET_SCREENSHOT, BM_SETCHECK, (bNewTicketScreenshot ? BST_CHECKED : BST_UNCHECKED), 0 );
950
966
951
967
return TRUE ;
952
968
}
953
969
case WM_COMMAND:
954
970
{
955
971
switch (LOWORD (wParam))
956
972
{
957
- case IDC_SETTINGS_EDIT_NEWTICKETURL:
958
- // Prevent closing the dialog when clicking the text box
973
+ case IDC_SETTINGS_EDIT_NEWTICKET_URL:
974
+ case IDC_SETTINGS_CHECKBOX_NEWTICKET_SCREENSHOT:
975
+ // Prevent closing the dialog when clicking these components
959
976
return TRUE ;
960
- case IDC_BTN_SAVE :
977
+ case IDC_SETTINGS_BTN_SAVE :
961
978
{
962
979
HKEY hk, hkMonitor;
963
980
LONG lRes;
964
981
WCHAR szKey[MAX_PATH];
965
982
966
983
// Get settings from dialog
967
984
WCHAR szTempNewTicketURL[300 ];
968
- LRESULT copiedChars = SendMessage (GetDlgItem (hWnd, IDC_SETTINGS_EDIT_NEWTICKETURL ), WM_GETTEXT,
985
+ LRESULT copiedChars = SendMessage (GetDlgItem (hWnd, IDC_SETTINGS_EDIT_NEWTICKET_URL ), WM_GETTEXT,
969
986
sizeof (szTempNewTicketURL), (LPARAM)szTempNewTicketURL);
970
987
szTempNewTicketURL[copiedChars] = ' \0 ' ;
988
+ BOOL bTempNewTicketScreenshot = IsDlgButtonChecked (hWnd, IDC_SETTINGS_CHECKBOX_NEWTICKET_SCREENSHOT);
971
989
972
990
// Save settings in registry
973
991
wsprintf (szKey, L" SOFTWARE\\ %s" , SERVICE_NAME);
@@ -1000,11 +1018,25 @@ LRESULT CALLBACK SettingsDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM
1000
1018
return FALSE ;
1001
1019
}
1002
1020
}
1021
+
1003
1022
// Save new ticket URL if it was changed
1004
- if (wcscmp (szTempNewTicketURL, szNewTicketURL) != 0 ) {
1023
+ if (wcscmp (szTempNewTicketURL, szNewTicketURL) != 0 )
1024
+ {
1005
1025
size_t szTempNewTicketURLLen = wcslen (szTempNewTicketURL) * sizeof (WCHAR);
1006
- lRes = RegSetValueEx (hkMonitor, L" NewTicket-URL" , 0 , REG_SZ,
1007
- (LPBYTE)szTempNewTicketURL, (DWORD)szTempNewTicketURLLen);
1026
+ lRes = RegSetValueEx (hkMonitor, L" NewTicket-URL" , 0 , REG_SZ, (LPBYTE)szTempNewTicketURL, (DWORD)szTempNewTicketURLLen);
1027
+ if (lRes != ERROR_SUCCESS)
1028
+ {
1029
+ LoadStringAndMessageBox (hInst, hWnd, IDS_ERR_SAVE_SETTINGS, IDS_ERROR, MB_OK | MB_ICONERROR, lRes);
1030
+ return FALSE ;
1031
+ }
1032
+ }
1033
+
1034
+ // Save new ticket screenshot setting if it was changed
1035
+ // Save new ticket URL if it was changed
1036
+ if (bTempNewTicketScreenshot != bNewTicketScreenshot)
1037
+ {
1038
+ lRes = RegSetValueEx (hkMonitor, L" NewTicket-Screenshot" , 0 , REG_DWORD,
1039
+ (LPBYTE)&bTempNewTicketScreenshot, sizeof (bTempNewTicketScreenshot));
1008
1040
if (lRes != ERROR_SUCCESS)
1009
1041
{
1010
1042
LoadStringAndMessageBox (hInst, hWnd, IDS_ERR_SAVE_SETTINGS, IDS_ERROR, MB_OK | MB_ICONERROR, lRes);
@@ -1023,11 +1055,12 @@ LRESULT CALLBACK SettingsDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM
1023
1055
// Store new ticket URL in memory
1024
1056
wcscpy_s (szNewTicketURL, szTempNewTicketURL);
1025
1057
}
1058
+ bNewTicketScreenshot = bTempNewTicketScreenshot;
1026
1059
1027
1060
PostMessage (hWnd, WM_CLOSE, 0 , 0 );
1028
1061
return TRUE ;
1029
1062
}
1030
- case IDC_BTN_CANCEL :
1063
+ case IDC_SETTINGS_BTN_CANCEL :
1031
1064
PostMessage (hWnd, WM_CLOSE, 0 , 0 );
1032
1065
return TRUE ;
1033
1066
}
@@ -1093,21 +1126,27 @@ LRESULT CALLBACK DlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
1093
1126
case IDC_BTN_NEWTICKET:
1094
1127
EndDialog (hWnd, NULL );
1095
1128
case ID_RMENU_NEWTICKET: {
1096
- // Take screenshot to clipboard (simulating PrintScreen) and open the ticket URL
1097
- INPUT ipInput[2 ] = { 0 };
1098
- Sleep (300 );
1099
- ipInput[0 ].type = INPUT_KEYBOARD;
1100
- ipInput[0 ].ki .wVk = VK_SNAPSHOT;
1101
- ipInput[1 ] = ipInput[0 ];
1102
- ipInput[1 ].ki .dwFlags |= KEYEVENTF_KEYUP;
1103
- SendInput (2 , ipInput, sizeof (INPUT));
1129
+ if (bNewTicketScreenshot) {
1130
+ // Take screenshot to clipboard (simulating PrintScreen)
1131
+ INPUT ipInput[2 ] = { 0 };
1132
+ Sleep (300 );
1133
+ ipInput[0 ].type = INPUT_KEYBOARD;
1134
+ ipInput[0 ].ki .wVk = VK_SNAPSHOT;
1135
+ ipInput[1 ] = ipInput[0 ];
1136
+ ipInput[1 ].ki .dwFlags |= KEYEVENTF_KEYUP;
1137
+ SendInput (2 , ipInput, sizeof (INPUT));
1138
+ }
1139
+ // Open the new ticket URL
1104
1140
ShellExecute (NULL , L" open" , szNewTicketURL, NULL , NULL , SW_SHOWNORMAL);
1105
1141
1106
- // Notify user that a screenshot is in the clipboard
1107
- nid.uFlags |= NIF_INFO;
1108
- LoadString (hInst, IDS_NOTIF_NEWTICKET_TITLE, nid.szInfoTitle , sizeof (nid.szInfoTitle ) / sizeof (WCHAR));
1109
- LoadString (hInst, IDS_NOTIF_NEWTICKET, nid.szInfo , sizeof (nid.szInfo ) / sizeof (WCHAR));
1110
- Shell_NotifyIcon (NIM_MODIFY, &nid);
1142
+ if (bNewTicketScreenshot) {
1143
+ // Notify user that a screenshot is in the clipboard
1144
+ nid.uFlags |= NIF_INFO;
1145
+ LoadString (hInst, IDS_NOTIF_NEWTICKET_TITLE, nid.szInfoTitle , sizeof (nid.szInfoTitle ) / sizeof (WCHAR));
1146
+ LoadString (hInst, IDS_NOTIF_NEWTICKET, nid.szInfo , sizeof (nid.szInfo ) / sizeof (WCHAR));
1147
+ Shell_NotifyIcon (NIM_MODIFY, &nid);
1148
+ }
1149
+
1111
1150
return TRUE ;
1112
1151
}
1113
1152
// Settings
0 commit comments