Implemented program launching by double click.
diff --git a/programs/winefile/winefile.c b/programs/winefile/winefile.c
index b28fae8..1d07329 100644
--- a/programs/winefile/winefile.c
+++ b/programs/winefile/winefile.c
@@ -125,7 +125,7 @@
HWND hwnd;
Pane left;
Pane right;
- int focus_pane; /* 0: left 1: right */
+ int focus_pane; /* 0: left 1: right */
WINDOWPLACEMENT pos;
int split_pos;
BOOL header_wdths_ok;
@@ -1139,8 +1139,12 @@
case ID_EXECUTE: {
struct ExecuteDialog dlg = {{0}};
- if (DialogBoxParam(Globals.hInstance, MAKEINTRESOURCE(IDD_EXECUTE), hwnd, ExecuteDialogWndProg, (LPARAM)&dlg) == IDOK)
- ShellExecute(hwnd, _T("open")/*operation*/, dlg.cmd/*file*/, NULL/*parameters*/, NULL/*dir*/, dlg.cmdshow);
+ if (DialogBoxParam(Globals.hInstance, MAKEINTRESOURCE(IDD_EXECUTE), hwnd, ExecuteDialogWndProg, (LPARAM)&dlg) == IDOK) {
+ HINSTANCE hinst = ShellExecute(hwnd, NULL/*operation*/, dlg.cmd/*file*/, NULL/*parameters*/, NULL/*dir*/, dlg.cmdshow);
+
+ if ((int)hinst <= 32)
+ display_error(hwnd, GetLastError());
+ }
break;}
case ID_HELP:
@@ -1222,7 +1226,7 @@
const static LPTSTR g_pos_names[COLUMNS] = {
- _T(""), /* symbol */
+ _T(""), /* symbol */
_T("Name"),
_T("Size"),
_T("CDate"),
@@ -2387,9 +2391,16 @@
#endif
}
} else {
+ TCHAR cmd[MAX_PATH];
+ HINSTANCE hinst;
- /*TODO: start program, open document... */
+ get_path(entry, cmd);
+ /* start program, open document... */
+ hinst = ShellExecute(child->hwnd, NULL/*operation*/, cmd, NULL/*parameters*/, NULL/*dir*/, SW_SHOWNORMAL);
+
+ if ((int)hinst <= 32)
+ display_error(child->hwnd, GetLastError());
}
}