创建一个命令菜单,显示菜单项并提示用户选择。
时间: 2024-03-08 10:49:00 浏览: 10
好的,下面是一个简单的命令菜单,可以供您参考:
```bash
#!/bin/bash
# 显示菜单项
echo "请选择操作:"
echo "1. 显示当前日期和时间"
echo "2. 显示系统信息"
echo "3. 显示磁盘使用情况"
echo "4. 退出"
# 提示用户选择
read -p "请输入选项(1-4): " choice
# 根据用户选择执行相应操作
case $choice in
1)
date
;;
2)
uname -a
;;
3)
df -h
;;
4)
exit 0
;;
*)
echo "无效的选项"
exit 1
;;
esac
```
该脚本首先显示一个命令菜单,列出了四个选项。然后使用`read`命令提示用户输入选项号码。接着,使用`case`语句根据用户输入执行相应的操作。如果用户输入了无效的选项,脚本将输出一个错误消息并退出。
相关问题
peony使用动态库的形式 自定义右键菜单 增加二级菜单 写个示例
这里提供一个使用动态库的形式在 Peony 文件管理器中自定义右键菜单并增加二级菜单的示例。
1. 编写动态库代码
在一个名为“test_extension”的目录下,创建一个名为“test_extension.c”的文件,输入以下代码:
```c
#include <gio/gio.h>
#include <peony-extension/peony-extension.h>
static void open_terminal(GtkMenuItem *menuitem, gpointer user_data)
{
system("gnome-terminal");
}
static void init(PeonyMenuProviderIface *iface, gpointer user_data)
{
PeonyMenu *menu = peony_menu_provider_get_root_menu(iface);
PeonyMenuItem *item = peony_menu_item_new("Open Terminal", NULL);
g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(open_terminal), NULL);
peony_menu_append(menu, item);
PeonyMenu *submenu = peony_menu_new("Submenu");
item = peony_menu_item_new("Submenu Item", NULL);
peony_menu_append(submenu, item);
peony_menu_append(menu, submenu);
}
G_MODULE_EXPORT void peony_extension_init(PeonyMenuProviderIface *iface, gpointer user_data)
{
init(iface, user_data);
}
```
这个代码定义了一个名为“test_extension”的动态库,当 Peony 文件管理器启动时会调用“peony_extension_init”函数。在这个函数中,我们使用 Peony 的 API 来创建一个菜单项“Open Terminal”,并在选中这个菜单项时打开终端。同时,我们还创建了一个名为“Submenu”的子菜单,并在其中添加了一个菜单项“Submenu Item”。
2. 编译动态库代码并生成动态库文件
在终端中进入“test_extension”目录,输入以下命令编译代码并生成动态库文件:
```
gcc -shared -fPIC -o libtest_extension.so test_extension.c `pkg-config --cflags --libs gio-2.0 peony-extension-2.0`
```
这个命令将编译“test_extension.c”文件,并生成一个名为“libtest_extension.so”的动态库文件。
3. 将动态库文件复制到 Peony 的扩展目录中
在终端中输入以下命令将动态库文件复制到 Peony 的扩展目录中:
```
sudo cp libtest_extension.so /usr/lib/x86_64-linux-gnu/peony/extensions/
```
这个命令将动态库文件复制到“/usr/lib/x86_64-linux-gnu/peony/extensions/”目录中。如果提示“Permission denied”错误,则需要使用 sudo 命令以管理员权限运行这个命令。
4. 在 Peony 文件管理器中启用扩展
打开 Peony 文件管理器,右键点击任意文件或文件夹,在右键菜单中选择“扩展”->“启用扩展”,即可启用这个动态库扩展。
5. 在 Peony 文件管理器中使用自定义菜单
启用扩展后,在右键菜单中就会出现一个名为“Open Terminal”的菜单项和一个名为“Submenu”的子菜单。选中“Open Terminal”菜单项时会打开终端,选中“Submenu”子菜单时会显示“Submenu Item”菜单项。
这个示例演示了如何使用动态库的形式在 Peony 文件管理器中自定义右键菜单并增加二级菜单。你可以在这个示例的基础上修改代码,实现你自己的菜单项和子菜单。
win32创建窗口,点击“非模式对话框”该菜单项时,在主菜单条下添加一个弹出式菜单“对话框”,下面有菜单项,分别为“打开”、“关闭”、分隔线和“删除菜单”,初始情况下“删除菜单”为不可用
以下是示例代码:
```c++
#include <windows.h>
// 全局变量
HINSTANCE hInst; // 当前实例句柄
HWND hWndMain; // 主窗口句柄
// 菜单命令 ID
#define IDM_OPEN 101
#define IDM_CLOSE 102
#define IDM_SEPARATOR 103
#define IDM_DELETE 104
// 窗口过程
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDM_OPEN:
MessageBox(hWnd, TEXT("打开对话框"), TEXT("提示"), MB_OK);
break;
case IDM_CLOSE:
MessageBox(hWnd, TEXT("关闭对话框"), TEXT("提示"), MB_OK);
break;
case IDM_DELETE:
MessageBox(hWnd, TEXT("删除菜单"), TEXT("提示"), MB_OK);
break;
}
break;
case WM_CREATE:
{
// 创建“对话框”弹出式菜单
HMENU hMenuPopup = CreatePopupMenu();
AppendMenu(hMenuPopup, MF_STRING, IDM_OPEN, TEXT("打开"));
AppendMenu(hMenuPopup, MF_STRING, IDM_CLOSE, TEXT("关闭"));
AppendMenu(hMenuPopup, MF_SEPARATOR, IDM_SEPARATOR, NULL);
AppendMenu(hMenuPopup, MF_GRAYED | MF_STRING, IDM_DELETE, TEXT("删除菜单"));
// 添加“非模式对话框”菜单项
HMENU hMenu = GetMenu(hWnd);
AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT_PTR)hMenuPopup, TEXT("对话框"));
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
// WinMain 入口函数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// 注册窗口类
WNDCLASSEX wcex = { sizeof(WNDCLASSEX) };
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.hInstance = hInstance;
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.lpszClassName = TEXT("MainWindowClass");
RegisterClassEx(&wcex);
// 创建主窗口
hInst = hInstance;
hWndMain = CreateWindow(TEXT("MainWindowClass"), TEXT("Win32 Window"), WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInstance, NULL);
if (!hWndMain)
{
return FALSE;
}
// 显示主窗口
ShowWindow(hWndMain, nCmdShow);
UpdateWindow(hWndMain);
// 消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
```
在主窗口的创建过程中,创建一个弹出式菜单,并添加菜单项。在窗口过程中,处理菜单命令,并显示相应的提示框。在“删除菜单”菜单项上设置 MF_GRAYED 标志,使其不可用。