summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/MirLua/Modules/WinAPI/src/winapi.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/plugins/MirLua/Modules/WinAPI/src/winapi.cpp b/plugins/MirLua/Modules/WinAPI/src/winapi.cpp
index 974010d7b6..bb1606ba35 100644
--- a/plugins/MirLua/Modules/WinAPI/src/winapi.cpp
+++ b/plugins/MirLua/Modules/WinAPI/src/winapi.cpp
@@ -1704,6 +1704,26 @@ static int global_GetCurrentProcessId(lua_State *L)
return 1;
}
+static int global_GetOpenFileName(lua_State *L)
+{
+ const char *szExt = luaL_optstring(L, 1, nullptr);
+ _A2T tszExt(szExt);
+ wchar_t buff[MAX_PATH], f[2] = { 0, 0 };
+
+ OPENFILENAME ofn = { 0 };
+ ofn.lStructSize = sizeof(ofn);
+ ofn.lpstrFile = buff;
+ ofn.nMaxFile = _countof(buff);
+ ofn.lpstrDefExt = tszExt;
+ ofn.lpstrFilter = f;
+
+ if (GetOpenFileNameW(&ofn))
+ lua_pushstring(L, T2Utf(buff));
+ else
+ lua_pushnil(L);
+ return 1;
+}
+
static luaM_consts consts[] =
{
{ "TRUE", TRUE },
@@ -1961,6 +1981,7 @@ static luaL_Reg winApi[] =
{ "CoInitialize", global_CoInitialize },
{ "CoUninitialize", global_CoUninitialize },
{ "GetCurrentProcessId", global_GetCurrentProcessId },
+ { "GetOpenFileName", global_GetOpenFileName },
{ NULL, NULL }
};