【导语】“起个昵称吧”通过精心收集,向本站投稿了10篇一个很不错的sell 菜单Windows系统,下面是小编整理后的一个很不错的sell 菜单Windows系统,欢迎大家阅读分享借鉴,希望对大家有所帮助。
- 目录
篇1:一个很不错的sell 菜单Windows系统
unix.ittoolbox.com/code/d.asp?d=2415#58;mmenu-shellscriptofusermenuitems #Description #Programconsistingofaseriesoffunctionsprovidingusermenus #forsimpletasks. # #Functionsareloadedintomemoryandavailableforexecution.Once #loaded,the
unix.ittoolbox.com/code/d.asp?d=2415&a=s
作者:amf57_unix
[code:1:035f8f0128]#Program: mmenu - shell script of user menu items
#Description:
# Program consisting of a series of functions providing user menus
# for simple tasks.
#
# Functions are loaded into memory and available for execution. Once
# loaded, the main menu will be invoked. The main menu (entry point) is :MainMenu.
#
# The following functions are declared:
# MainMenu
# EditFile
# MailMenu
# UserUtilMenu
# FileDirUtilMenu
# GetFileName
# ExecuteCommand
#
# Last updated on 10/10/2002 by A.M. Foster
#************************************************************8
#Screen Display Variables
REV=`tput rev`
REV=`tput sgr0`
BLD=`tput smso`
BLD=`tput rmso`
#Various variables
MenuMsg=“”
MenuChoice=“”
#*********************************************************************8
#Routine: MainMenu
#Main Menu function which displays the main menu to stdout.
MainMenu
{
#Menu loop
while true
do
tput clear
MenuChoice=“”
#Main Menu - display the main menu
echo “”
echo “”
echo “ ${REV}Main Menu${OREV}”
echo “”
echo “”
echo “ 1. ${BLD}E${OBLD}dit / File ”
echo “”
echo “ 2. ${BLD}S${OBLD}end/Receive Mail ...”
echo “”
echo “ 3. ${BLD}U${OBLD}ser Utilities ...”
echo “”
echo “ 4. ${BLD}F${OBLD}ile Directory Utilities ...”
echo “”
echo “ 0. ${BLD}L${OBLD}og Off System”
echo “”
echo “”
echo “${BLD}${MenuMsg}${OBLD}”
echo “”
echo “”
echo -n “${BLD}Select: ${OBLD}”
MenuMsg=“”
#Get user's choice and evaluate with case statement
read MenuChoice #get user selection
case ${MenuChoice} in
“1” | “e” | “E” )
EditFile
;;
“2” | “s” | “S” )
MailMenu
;;
“3” | “u” | “U” )
UserUtilMenu
;;
“4” | “f” | “F” )
FileDirUtilMenu
;;
“0” | “l” | “L” )
echo “ ”
echo “ ”
echo “Exiting per User request!”
sleep 2
tput clear
exit 1
;;
* )
MenuChoice=“”
MenuMsg=“${BLD}Invalid choice. Please try again.${OBLD}”
;;
#Example of menu command that is hidden from users. Note that
#it is not in the menu, but has a choice in the case statement.
“admin” )
ExecuteCommand 'ps -ef | more'
;;
esac #end of case statement
done #end of menu loop
}
#************************************************************************************
#Routine EditFile
#Presents the Edit File Menu to stdout
EditFile()
{
MenuMsg=“”
while true
do
MenuChoice=“”
tput clear
echo “”
echo “”
echo “${REV}EDIT FILE${OREV}”
echo “”
echo “”
echo “1. ${BLD}E${OBLD}nter File Name ”
echo “”
echo “2. Enter File Name Name from Li${BLD}s${OBLD}t ... ”
echo “”
echo “0. ${BLD}M${OBLD}ain Menu ”
echo “”
echo “”
echo “${BLD}${MenuMsg}${OBLD}”
echo “”
echo “”
echo -n “${BLD}Select: ${OBLD}”
MenuMsg=“”
#Get user's choice and evaluate with case statement
read MenuChoice #get user selection
case ${MenuChoice} in
“1” | “e” | “E” )
echo -n “Enter file name to edit: ”
read FileName
if [ -z “${FileName}” ] #check if user provided a file name
then
MenuMsg=“You did not enter a valid file name!”
else
if [ -f ${FileName} ] #check if file exists
then
#check if file is a text file
if [ “file ${FileName} | grep text >> /dev/null” ]
then
filesoktoedit=“y”
else
MenuMsg=“${FileName} - is not an editable file!”
fi
else
filesoktoedit=“y”
fi
fi
if [ $}filesoktoedit}=“y” ]
then
vi “${FileName}”
echo “ ”
echo “ Press any key to continue..”
fi
;;
“2” | “s” | “S” )
FileName=“”
GetFileName FileName
if [ $? -eq 0 ]
then
if [ “file ${FileName} | grep text >> /dev/null” ]
then
vi “${FileName}”
echo “ ”
echo “ Press any key to continue..”
else
MenuMsg=“${BLD}${FileName} - is not an editable file!${OBLD}1”
fi
fi
;;
“0” | “m” | “M” )
break
;;
* )
MenuChoice=“”
MenuMsg=“${BLD}Invalid Choice! Please try again.${OBLD}”
;;
esac
done
return 0
} #end of EditFile function
#**********************************************************************************
#Routine MailMenu
#Displays Mail Menu to stdout
MailMenu()
{
MessageMenu=“”
while true
do
tput clear
MenuChoice=“”
echo “”
echo “”
echo “${REV}MAIL MENU${OREV}”
echo “”
echo “”
echo “ 1. ${BLD}S${OBLD}end Mail”
echo “”
echo “ 2. ${BLD}R${OBLD}eceive Mail”
echo “”
echo “ 0. ${BLD}M${OBLD}ain Menu”
echo “”
echo “${BLD}${MenuMsg}${OBLD}”
echo “”
echo “”
echo -n “${BLD}Select: ${OBLD}”
MenuMsg=“”
#Get user's choice and evaluate with case statement
read MenuChoice #get user selection
case ${MenuChoice} in
“1” | “s” | “S” )
echo “ ”
echo -n “Enter a mail ID to send to: ”
read mailid
if [ -z “${mailid}” ]
then
MenuMsg=“You must enter a mailid to send mail!”
fi
echo -n “Type your message: ^D to end: ”
mail ${mailid}
echo “ ”
echo “ Press any key to continue...”
;;
“2” | “r” | “R” )
echo “ ”
echo “Press any key to continue...”
;;
“0” | “m” | “M” )
break
;;
* )
MenuChoice=“”
MenuMsg=“${BLD}Invalid Choice! Please try again.${OBLD}”
;;
esac
done
} #end of MailMenu function
#********************************************************************************
#Routine UserUtilMenu
UserUtilMenu()
{
MenuMsg=“”
while true
do
tput clear
MenuChoice=“”
echo “”
echo “”
echo “${REV}USER UTILITY MENU${OREV}”
echo “ ”
echo “ ”
echo “ 1. ${BLD}C${OBLD}hange Password”
echo “”
echo “ 2. ${BLD}D${OBLD}isplay Date and Time”
echo “”
echo “ 3. ${BLD}W${OBLD}ho is logged on”
echo “”
echo “ 0. ${BLD}M${OBLD}ain Menu”
echo “”
echo “${BLD}${MenuMsg}${OBLD}”
echo “”
echo “”
echo -n “${BLD} Select: ${OBLD}”
MenuMsg=“”
#Get user's choice and evaluate with case statement
read MenuChoice #get user selection
case ${MenuChoice} in
“1” | “c” | “C” )
ExecuteCommand 'passwd'
;;
“2” | “d” | “D” )
ExecuteCommand 'date'
sleep 3
;;
“3” | “w” | “W” )
ExecuteCommand 'who'
sleep 3
;;
“0” | “m” | “M” )
break
;;
* )
MenuChoice=“”
MenuMsg=“${BLD}Invalid Choice! Please try again.${OBLD}”
;;
esac
done
} # end of UserUtilMenu function
#********************************************************************************
#Routine FileDirUtilMenu
FileDirUtilMenu()
{
MenuMsg=“”
while true
do
tput clear
MenuChoice=“”
echo “”
echo “”
echo “${REV}FILE / DIRECTORY UTILITY MENU${OREV}”
echo “”
echo “”
echo “ 1. ${BLD}L${OBLD}ist files and directories”
echo “”
echo “ 2. ${BLD}C${OBLD}reate Directory”
echo “”
echo “ 3. ${BLD}R${OBLD}emove Directory”
echo “”
echo “ 4. ${BLD}D${OBLD}elete file”
echo “”
echo “ 5. Mo${BLD}v${OBLD}e file”
echo “”
echo “ 6. C${BLD}o${OBLD}py file”
echo “”
echo “ 0. ${BLD}M${OBLD}ain Menu”
echo “”
echo “”
echo “${BLD} ${MenuMsg}${OBLD}”
echo “”
echo “”
echo -n “${BLD} Select: ${OBLD}”
echo “”
MenuMsg=“”
read MenuChoice #get user selection
case ${MenuChoice} in
“1” | “l” | “L” )
ExecuteCommand 'ls -l'
;;
“2” | “c” | “C” )
echo “”
echo -n “Enter Directory name: ”
read dir
if [ -d ${dir} ]
then
MenuMsg=“${dir} - Directory already exists.”
else
mkdir ${dir}
echo “”
echo “Press any key to continue..”
fi
;;
“3” | “r” | “R” )
echo “”
echo -n “Enter Directory name: ”
read dir
if [ -d ${dir} ]
then
rmdir ${dir}
if [ $? -eq 0 ]
then
echo “”
echo “Press any key to continue..”
else
MenunMessage=“${dir} - Error removing directory. (Not empty).”
fi
else
MenuMsg=“${BLD}${dir} - Directory does not exist.${OBLD}”
fi
;;
“4” | “d” | “D” )
echo “”
echo -n “Enter File name: ”
read filename
if [ -f $filename ]
then
rm ${filename}
if [ $? -eq 0 ]
then
:
else
MenuMsg=“${BLD}${filename} - Error removing file.${OBLD}”
fi
echo “”
echo “Press any key to continue..”
else
MenuMsg=“${BLD}${filename} - File does not exist.${OBLD}”
fi
;;
“5” | “v” | “V” )
echo “”
echo -n “Enter source file name: ”
read srcfile
if [ ! -f $srcfile ]
then
MenuMsg=“${BLD}${srcfile} - file does not exist.${OBLD}”
continue
fi
echo “”
echo -n “Enter target file name: ”
read targetfile
if [ -f ${targetfile} ]
then
echo “”
echo “${targetfile} already exists”
echo -n “Overwrite (y/n) ”
read move
else
move=“y”
fi
if [ “${move}” = “y” -o “${move}” = “Y” ]
then
mv ${srcfile} ${targetfile}
if [ $? -eq 0 ]
then
:
else
MenuMsg=“${BLD}${filename} - Error moving file.${OBLD}”
fi
echo “”
echo “Press any key to continue..”
fi
;;
“6” | “o” | “O” )
echo “”
echo -n “Enter source file name: ”
read srcfile
if [ ! -f $srcfile ]
then
MenuMsg=“${BLD}${filename} - file does not exist.${OBLD}”
continue
fi
echo “”
echo -n “Enter target file name: ”
read targetfile
if [ -f $targetfile ]
then
echo “”
echo “${targetfile} already exists”
echo -n “Overwrite (y/n): ”
read copy
else
copy=“y”
fi
if [ “${copy}” = “y” -o “${copy}” = “Y” ]
then
cp ${srcfile} ${targetfile}
if [ $? -eq 0 ]
then
:
else
MenuMsg=“${BLD}${filename} - Error copying file.${OBLD}”
fi
echo “”
echo “Press any key to continue..”
fi
;;
“0” | “m” | “M” )
break
;;
* )
MenuChoice=“”
MenuMsg=“${BLD}Invalid Choice! Please try again${OBLD}”
;;
esac
done
} #end of FileDirUtilMenu function
#********************************************************************************
#Routine GetFileNama
#Displays directory listing associated with an array of numbers. File is selected by
#selecting number associated with the file name.
GetFileName()
{
#Variables
typeset -i Index
typeset -i IndexIncrement
typeset -i MaxIndex
IndexIncrement=1
Index=0
#executes ls and loads all files and directories into an array
for i in $(ls)
do
FileName[Index]=“${i}”
Index=Index+IndexIncrement
done
#sets MaxIndex to the number of files returned
MaxIndex=Index-IndexIncrement
Index=0
#Displays the results to the stdout
tput clear
MenuChoice=“”
echo “”
echo “${BLD}Item File Name${OBLD}”
echo “____ _____________________________________________”
#adjusts spacecing variable to make sure columns are aligned when index is 2 digits
while true
do
if [ “${Index}” -lt 10 ]
then
spcl=“ ”
else
spcl=“”
fi
echo “${Index}${spcl}) ${FileName[$Index]} ”
Index=Index+IndexIncrement
if [ “${Index}” -gt “${MaxIndex}” ]
then
break
fi
done
echo -n “Enter Item Number of File to use: ”
read MenuChoice #get user selection
if [ -z “${MenuChoice}” ]
then
echo “Invalid entry!”
sleep 2
return 1
fi
if [ “${MenuChoice}” -gt “${MaxIndex}” ]
then
echo “Invalid Entry : ${MenuChoice}”
sleep 2
return 1
fi
eval “${1}=${FileName[$(expr $MenuChoice)]}”
return 0
} #end of GetFileName function
#********************************************************************************
#Routine ExecuteCommand
ExecuteCommand()
{
tput clear
echo “ ”
echo “ ”
echo “ ”
$1
echo “ ”
echo “Press any key to continue..”
return
}
MainMenu
[/code:1:035f8f0128]
zg3879 回复于:2004-05-22 07:36:12这个shell是干什么用的,怎么也没有功能介绍!
simonzhan 回复于:2004-05-22 09:24:31这是一个shell的通用菜单模板,你可以在上面添加自己的应用.
htldm 回复于:2004-05-22 14:05:47不错!很通用,
一个很不错的sell 菜单Windows系统
,
zfl 回复于:2004-05-22 21:08:25先收藏.
jerry111 回复于:2004-05-23 08:09:39谢谢楼主分享
erjing 回复于:2004-05-23 21:18:04谢谢!
li2002 回复于:2004-05-24 08:11:20蛮不错的,有学习的地方
sdclearcase/“ target=”_blank“ >ccf 回复于:2004-05-24 08:38:59调用一些常用的命令和系统管理功能。
绣林 回复于:2004-05-24 08:49:54很通用,不错。
lurchin 回复于:2004-05-24 16:27:14不错,楼主辛苦了
海德 回复于:2004-05-24 18:39:34收藏!!
好东东
:)
moomoon 回复于:2004-05-25 17:56:29xie xie
qinjian1981 回复于:2004-05-26 13:17:13先收到收藏夹吧
谢谢了
原文转自:www.ltesting.net
篇2:通用菜单生成程序Windows系统
功能还不是很完善,我正在改进中,这个小东东折腾了我好几天。:oops: [code:1:0c9ffa1d10] /***********主程序****************/ /***ccmenu.c-lcurses-omenu*/ #includestdio.h #includecurses.h #includectype.h #defineENTER10 #defineESCAPE27 WINDOW*me
功能还不是很完善,我正在改进中。这个小东东折腾了我好几天。 :oops:
[code:1:0c9ffa1d10]
/*********** 主程序 ****************/
/***clearcase/” target=“_blank” >ccmenu.c -lcurses -omenu */
#include
#include
#include
#define ENTER 10
#define ESCAPE 27
WINDOW *menubar,*messagebar,*temp,*temp1;
char param[10][10][13];
void init_curses()
{
initscr();
start_color();
init_pair(1,COLOR_WHITE,COLOR_BLUE);
init_pair(2,COLOR_BLUE,COLOR_WHITE);
init_pair(3,COLOR_RED,COLOR_WHITE);
init_pair(4,COLOR_WHITE,COLOR_RED);
curs_set(0);
noecho();
keypad(stdscr,TRUE);
}
void GetSubStr(char *des, char *src, char ch,int n)
{
int i,len;
char *p1,*p, tmp[300];
strcpy( tmp, src );
*des=0;
p1 = tmp;
i=0;
while(i
{
i++;
p = (char *)strchr(p1,ch);
if(p != NULL)
{
*p++ = 0;
p1 = p;
}
}
p = (char *)strchr(p1,ch);
if(p != NULL)
{
*p = 0;
strcpy(des,p1);
}
}
int get_param(char *name)
{
FILE *fp;
char ss[201],xm[3],gs[3];
int i,j;
sprintf(ss,“%s.conf”,name);
if((fp=fopen(ss,“r”))==NULL) return(-1);
for(j=0;j<10;j++) for(i=0;i<10;i++) memset(param[j][i],0,13);
while(1)
{
memset(ss,0,201);
fgets(ss,200,fp);
if(feof(fp)) break;
if(ss[0]=='#') continue;
GetSubStr(xm,ss,'|',0);
GetSubStr(gs,ss,'|',1);
j=atoi(xm);
for(i=1;i<=atoi(gs);i++)
{
sprintf(param[j][0],“%s”,gs);
GetSubStr(param[j][i],ss,'|',i+1);
}
}
fclose(fp);
return(0);
}
void draw_menubar(WINDOW *menubar)
{
int i;
wbkgd(menubar,COLOR_PAIR(2));
for(i=0;i
{
wattron(menubar,COLOR_PAIR(3));
mvwprintw(menubar,0,i*14+2,“%1d.”,i+1);
wattroff(menubar,COLOR_PAIR(3));
mvwprintw(menubar,0,i*14+4,“%-12s”,param[0][i+1]);
}
}
WINDOW **draw_menu(int menu)
{
int i,start_col;
WINDOW **items;
items=(WINDOW **)malloc((atoi(param[menu][0])+1)*sizeof(WINDOW *));
start_col=(menu-1)*14+2;
items[0]=newwin(atoi(param[menu][0])+2,14,3,start_col);
wbkgd(items[0],COLOR_PAIR(2));
box(items[0],ACS_VLINE,ACS_HLINE);
for(i=1;i<=atoi(param[menu][0]);i++)
{
items[i]=subwin(items[0],1,12,3+i,start_col+1);
wprintw(items[i],“%s”,param[menu][i]);
}
wbkgd(items[1],COLOR_PAIR(4));
wrefresh(items[0]);
return items;
}
void delete_menu(WINDOW **items,int count)
{
int i;
for(i=0;i
free(items);
}
int scroll_menu(WINDOW **items,int menu)
{
int key,count,selected=0;
count=atoi(param[menu][0]);
while (1)
{
key=getch();
if (key==KEY_DOWN || key==KEY_UP)
{
wbkgd(items[selected+1],COLOR_PAIR(2));
wnoutrefresh(items[selected+1]);
if (key==KEY_DOWN)
selected=(selected+1) % count;
else
selected=(selected+count-1) % count;
wbkgd(items[selected+1],COLOR_PAIR(4));
wnoutrefresh(items[selected+1]);
doupdate();
}
else if (key==KEY_LEFT || key==KEY_RIGHT)
{
delete_menu(items,count+1);
touchwin(stdscr);
refresh();
if (key==KEY_LEFT)
{
menu-=1;
if(menu<=0) menu=atoi(param[0][0]);
items=draw_menu(menu);
return scroll_menu(items,menu);
}
if (key==KEY_RIGHT)
{
menu+=1;
if(menu>atoi(param[0][0])) menu=1;
items=draw_menu(menu);
return scroll_menu(items,menu);
}
}
else if (key==ESCAPE || key=='0' || key=='q')
{
delete_menu(items,count+1);
return -1;
}
else if (key==ENTER)
{
delete_menu(items,count+1);
return selected;
}
}
}
message(char *ss)
{
wbkgd(messagebar,COLOR_PAIR(2));
wattron(messagebar,COLOR_PAIR(3));
mvwprintw(messagebar,0,0,“%80s”,“ ”);
mvwprintw(messagebar,0,(80-strlen(ss))/2-1,“%s”,ss);
wattroff(messagebar,COLOR_PAIR(3));
wrefresh(messagebar);
}
int main(int argc,char **argv)
{
int key;
int selected_item;
char ss[81];
WINDOW **menu_items;
if(get_param(argv[0]))
{
printf(“\\n打开配置文件 %s.conf 错!\\n”,argv[0]);
return(-1);
}
init_curses();
bkgd(COLOR_PAIR(1));
menubar=subwin(stdscr,1,80,1,0);
messagebar=subwin(stdscr,1,80,24,0);
temp=subwin(stdscr,22,80,2,0);
temp1=subwin(stdscr,20,78,3,1);
strcpy(ss,“通用菜单生成程序”);
mvwprintw(stdscr,0,(80-strlen(ss))/2-1,“%s”,ss);
draw_menubar(menubar);
message(“请按数字键选择相应菜单. ESC 或'0'键退出.”);
box(temp,ACS_VLINE,ACS_HLINE);
refresh();
do {
key=getch();
if(isdigit(key)&&key>'0'&&key<=atoi(param[0][0])+'0')
{
werase(messagebar);
wrefresh(messagebar);
menu_items=draw_menu(key-'0');
selected_item=scroll_menu(menu_items,key-'0');
touchwin(stdscr);
refresh();
}
} while (key!=ESCAPE && key!='q' && key!='0');
delwin(temp1);
delwin(temp);
delwin(menubar);
delwin(messagebar);
endwin();
return(0);
}
[/code:1:0c9ffa1d10]
htldm 回复于:2003-10-11 08:54:55菜单参数配置文件 menu.conf
[code:1:26d743f75f]
#
# 格式为: 菜单号|项目个数|项目名称......
# 菜单数量最大为10个
#
0|6|菜单一|菜单二|菜单三|菜单四|菜单五|菜单六|
1|3|menu11|menu12|menu13|
2|8|menu21|menu22|menu23|menu24|menu25|menu26|menu27|menu28|
3|5|menu31|menu32|menu33|menu34|menu35|
4|4|menu41|menu42|menu43|menu44|
5|2|menu51|menu52|
6|1|menu61|
[/code:1:26d743f75f]
海德 回复于:2003-10-11 09:31:47:lol:
kofd 回复于:2003-10-11 09:48:35好东西,珍藏!
foolboy007 回复于:2003-10-11 10:01:07跟俺这的程序差不多
只不过 俺这的菜单配置程序是xml格式的
不知道有啥区别
tingya 回复于:2003-10-11 10:33:24比起我的功能差远了,
可以支持任意多层次的菜单,需要者请到
asp.6to23.com/vcprogram/resdown/resource/fmenu.zip下在,这是图书
sdccf 回复于:2003-10-11 14:34:00错别字多多!
tingya 回复于:2003-10-12 12:25:55能看懂就行,你老兄一定是看懂了。:)
alanlql 回复于:2003-10-12 22:57:38楼上的朋友,我这好象不能下哦,hehe
li2002 回复于:2003-10-13 09:15:56确实下不了,下不了的东东就不要说了,浪费大家时间~~
kunrong 回复于:2003-10-13 09:34:55确实不错!谢谢楼主!我要好好的读一下!认真的学习一下!
阿徐 回复于:2003-10-13 11:56:11嗬嗬,很有用,但是还有一个问题,比方说,如果我要进入菜单后按enter,如何执行程序,或弹出另外一个子窗口,该如何实现,我也来修改
学习看看,把这个东东完善!!
tingya 回复于:2003-10-13 12:33:25asp.6to23.com/vcprogram/resdown/resource/fmenu.zip
阿徐 回复于:2003-10-13 13:03:35楼上的,还是不能呀,你这个东东阿保存为0字节,不能下
mrhxn 回复于:2003-10-13 13:59:06的确不行!贴一个上来!
kunrong 回复于:2003-10-13 15:28:43真的不能下哦。。。。。期待中。。。。。。
sdccf 回复于:2003-10-13 20:55:18unix-cd.com/softdown/show.asp?id=539
edit 回复于:2003-10-14 09:46:49有错
cc -g f_loadfield.c f_loadlabel.c f_otherfun.c xmlparse.c hashtable.c xmltok.c xmlrole.c f_drawform.c -lform -lcurses
f_loadfield.c:
“./f_menuhead.h”, line 137: error: identifier redeclared: F_MENU
f_loadlabel.c:
sdccf 回复于:2003-10-14 09:53:18请作者说一下在SCOUNIX下的编译方法.
htldm 回复于:2003-10-14 09:56:17这个程序确实还不是很完善,我也只是抛砖引玉,希望大家共同完善它
sdccf 回复于:2003-10-14 09:58:18我是说那个随书的源程序。
lzlcd 回复于:2004-05-12 09:45:09是个实用的好东东,我试用用看
lhk 回复于:2005-04-16 22:38:41[quote:4f1885edf3=“htldm”][/quote:4f1885edf3]
message()
不好用,不好用啊。反正我怎么试也没有看见帮助信息?
不知道怎么回事啊!
是一个问题,
怎么弄啊,告诉我啊
zhyesno 回复于:2005-04-18 08:58:20不错,编译了,挺漂亮的.
Thx。。。
myqueue 回复于:2005-04-26 15:34:32myqueue.net.dhis.org/mytui/index.php
也欢迎提宝贵意见
nirvana1125 回复于:2005-04-27 11:21:27编译完成。确实很漂亮。我正在想怎么能实用呢。多谢。多谢!
nirvana1125 回复于:2005-04-27 14:20:20希望大侠们能指明如何调用外部shell,或者4gl等可执行程序。
感激。
原文转自:www.ltesting.net
篇3:C语言菜单源程序Windows系统
(根据楼下朋友提示修改后的,编译无错误) #includecurses.h #includestdlib.h #defineESC27 #defineENTER10 #defineITEM_NUM_13 #defineITEM_NUM_22 #defineITEM_NUM_33 #defineITEM_NUM_44 #defineITEM_NO_11 #defineITEM_NO_22 #defineITEM_NO_33 #defin
(根据楼下朋友提示修改后的,编译无错误)
#include
#include
#define ESC 27
#define ENTER 10
#define ITEM_NUM_1 3
#define ITEM_NUM_2 2
#define ITEM_NUM_3 3
#define ITEM_NUM_4 4
#define ITEM_NO_1 1
#define ITEM_NO_2 2
#define ITEM_NO_3 3
#define ITEM_NO_4 4
void init_curses(void);
void Draw_menuhead(WINDOW *menuhead);
WINDOW **Draw_menu(int start_cols,int itemNo);
int view_menu(WINDOW **items,/*int itemNum,*/int start_cols,int itemNo);
void Del_menu(WINDOW **items,int itemNum);
int item_num(int itemNo);
main
{
WINDOW *menuhead,*message;
WINDOW **items;/*菜单项目指针,数组元素指向菜单项子项*/
int Key;
int count;/*菜单子项的数目*/
int Re_item;/*菜单浏览返回值*/
init_curses();
wbkgd(stdscr,COLOR_PAIR(1));
menuhead=subwin(stdscr,1,80,0,0);
message=subwin(stdscr,1,79,23,1);
Draw_menuhead(menuhead);/*绘制菜单头部*/
move(2,1);
printw(“Please F1--F4 Select Menu...”);
move(3,1);
printw(“Please ESC Quit...”);
do {
Key=getch();
switch(Key) {
case KEY_F(1):
items=Draw_menu(3,ITEM_NO_1);/*第3列,第1菜单*/
Re_item=view_menu(items,/*ITEM_NUM_1,*/3,ITEM_NO_1);
touchwin(stdscr);
refresh();
break;
case KEY_F(2):
items=Draw_menu(23,ITEM_NO_2);/*第23列,第2菜单*/
Re_item=view_menu(items,/*ITEM_NUM_2,*/23,ITEM_NO_2);
touchwin(stdscr);
refresh();
break;
case KEY_F(3):
items=Draw_menu(43,ITEM_NO_3);/*第43列,第3菜单*/
Re_item=view_menu(items,/*ITEM_NUM_3,*/43,ITEM_NO_3);
touchwin(stdscr);
refresh();
break;
case KEY_F(4):
items=Draw_menu(63,ITEM_NO_4);/*第63列,第4菜单*/
Re_item=view_menu(items,/*ITEM_NUM_4,*/63,ITEM_NO_4);
touchwin(stdscr);
refresh();
break;
default: break;
}
} while(Key!=ESC);
delwin(message);
delwin(menuhead);
endwin();
exit(0);
}
void Draw_menuhead(WINDOW *menuhead)
{
wbkgd(menuhead,COLOR_PAIR(2));
wrefresh(menuhead);
wmove(menuhead,0,0);
waddstr(menuhead,“菜单1”);
wattron(menuhead,COLOR_PAIR(3));
waddstr(menuhead,“(F1)”);
wattroff(menuhead,COLOR_PAIR(3));
wmove(menuhead,0,20);
waddstr(menuhead,“菜单2”);
wattron(menuhead,COLOR_PAIR(3));
waddstr(menuhead,“(F2)”);
wattroff(menuhead,COLOR_PAIR(3));
wmove(menuhead,0,40);
waddstr(menuhead,“菜单3”);
wattron(menuhead,COLOR_PAIR(3));
waddstr(menuhead,“F(3)”);
wattroff(menuhead,COLOR_PAIR(3));
wmove(menuhead,0,60);
waddstr(menuhead,“菜单4”);
wattron(menuhead,COLOR_PAIR(3));
waddstr(menuhead,“F(4)”);
wattroff(menuhead,COLOR_PAIR(3));
}
void init_curses(void)
{
initscr();
noecho();
keypad(stdscr,TRUE);
/*intrflush(stdscr,FALSE);*/
start_color(); /*初始化*/
init_pair(1,COLOR_WHITE,COLOR_BLUE);
init_pair(2,COLOR_BLUE,COLOR_WHITE);
init_pair(3,COLOR_RED,COLOR_WHITE);
curs_set(0); /*设置光标不可见*/
}
WINDOW **Draw_menu(int start_cols,int itemNo)
{
WINDOW **items;
switch(itemNo) {
case 1:
items=(WINDOW **)malloc((ITEM_NUM_1+1)*sizeof(WINDOW *));
items[0]=newwin(ITEM_NUM_1+2,19,1,start_cols);
wbkgd(items[0],COLOR_PAIR(2));
box(items[0],ACS_VLINE,ACS_HLINE);
items[1]=subwin(items[0],1,17,2,start_cols+1);
wprintw(items[1],“子项A1”);
items[2]=subwin(items[0],1,17,3,start_cols+1);
wprintw(items[2],“子项A2”);
items[3]=subwin(items[0],1,17,4,start_cols+1);
wprintw(items[3],“子项A3”);
/* items[4]=subwin(items[0],1,17,5,start_cols+1);
wprintw(items[4],“子项A4”);*/
break;
case 2:
items=(WINDOW **)malloc((ITEM_NUM_2+1)*sizeof(WINDOW *));
items[0]=newwin(ITEM_NUM_2+2,19,1,start_cols);
wbkgd(items[0],COLOR_PAIR(2));
box(items[0],ACS_VLINE,ACS_HLINE);
items[1]=subwin(items[0],1,17,2,start_cols+1);
wprintw(items[1],“子项B1”);
items[2]=subwin(items[0],1,17,3,start_cols+1);
wprintw(items[2],“子项B2”);
/* items[3]=subwin(items[0],1,17,4,start_cols+1);
wprintw(items[3],“子项B3”);
items[4]=subwin(items[0],1,17,5,start_cols+1);
wprintw(items[4],“子项B4”);*/
break;
case 3:
items=(WINDOW **)malloc((ITEM_NUM_3+1)*sizeof(WINDOW *));
items[0]=newwin(ITEM_NUM_3+2,19,1,start_cols);
wbkgd(items[0],COLOR_PAIR(2));
box(items[0],ACS_VLINE,ACS_HLINE);
items[1]=subwin(items[0],1,17,2,start_cols+1);
wprintw(items[1],“子项C1”);
items[2]=subwin(items[0],1,17,3,start_cols+1);
wprintw(items[2],“子项C2”);
items[3]=subwin(items[0],1,17,4,start_cols+1);
wprintw(items[3],“子项C3”);
/* items[4]=subwin(items[0],1,17,5,start_cols+1);
wprintw(items[4],“子项C4”);*/
break;
case 4:
items=(WINDOW **)malloc((ITEM_NUM_4+1)*sizeof(WINDOW *));
items[0]=newwin(ITEM_NUM_4+2,19,1,start_cols);
wbkgd(items[0],COLOR_PAIR(2));
box(items[0],ACS_VLINE,ACS_HLINE);
items[1]=subwin(items[0],1,17,2,start_cols+1);
wprintw(items[1],“子项D1”);
items[2]=subwin(items[0],1,17,3,start_cols+1);
wprintw(items[2],“子项D2”);
items[3]=subwin(items[0],1,17,4,start_cols+1);
wprintw(items[3],“子项D3”);
items[4]=subwin(items[0],1,17,5,start_cols+1);
wprintw(items[4],“子项D4”);
break;
default: break;
}
wbkgd(items[1],COLOR_PAIR(1));
wrefresh(items[0]);
return items;
}
view_menu(WINDOW **items,/*int itemNum,*/int start_cols,int itemNo)
{
int select=0;/*适应求余算法,0--itemNum-1,对应1--itemNum*/
int Key;
int itemNum;
itemNo=itemNo-1;/*适应求余算法,0--3对应1--4*/
wrefresh(items[0]);
A1:
itemNum=item_num(itemNo+1);
while(1) {
Key=getch();
if(Key==KEY_DOWN || Key==KEY_UP) {
wbkgd(items[select+1],COLOR_PAIR(2));
wnoutrefresh(items[select+1]);
if (Key==KEY_DOWN)
select=(select+1) % itemNum;
else
select=(select+itemNum-1) % itemNum;
wbkgd(items[select+1],COLOR_PAIR(1));
wnoutrefresh(items[select+1]);/*select+1为第几项目1/2/3../itemNum*/
doupdate();
}
else {
if (Key==KEY_LEFT || Key==KEY_RIGHT) {
Del_menu(items,itemNum+1);
touchwin(stdscr);
refresh();
if (Key==KEY_RIGHT)
if (start_cols<63){
itemNo=(itemNo+1) % 4; /*4: 一共4个菜单*/
start_cols=start_cols+20; /*20: 菜单之间原点间隔数*/
}
else{
itemNo=0;
start_cols=3;
}
else
if (start_cols>3) {
itemNo=(itemNo+4-1) % 4;
start_cols=start_cols-20;
}
else {
itemNo=3;
start_cols=63;
}
items=Draw_menu(start_cols,itemNo+1);/*itemNo+1为菜单号1\\2\\3\\4*/
select=0;
goto A1;
/*return view_menu(items,4,start_cols); */
}
if (Key==ESC) return -1;
else
if (Key==ENTER){
return 1; /* */
}
}
}
}
void Del_menu(WINDOW **items,int itemNum)
{
int i;
for (i=0;i
{
delwin(items[i]);
free(items);
}
}
item_num(int itemNo)/*根据菜单号找出对应项目数*/
{
switch(itemNo) {
case 1: return ITEM_NUM_1;
case 2: return ITEM_NUM_2;
case 3: return ITEM_NUM_3;
case 4: return ITEM_NUM_4;
}
}
jysww 回复于:2003-02-19 22:14:52建议放到精华区吧!
sdclearcase/“ target=”_blank“ >ccf 回复于:2003-02-19 22:21:51已在精华区.
007xiong 回复于:2003-04-23 22:22:33请问:哪里来的delwin函数?
谢谢!!
geekchi 回复于:2003-04-25 12:56:18请问:哪里来的delwin函数?
谢谢!!
curses 中有
guyp 回复于:2003-08-08 17:47:40请问大侠们有没有多用户权限登录功能?
kunrong 回复于:2003-09-25 09:13:17程序最后有一行for (i=0;i delwin(items[i]); 有错误,
是否应改为for(i=0;i
我是初学,这样改后能编译后运行,但不敢保证完全正确,请各位指教!
hseng 回复于:2004-01-05 12:09:40void Del_menu(WINDOW **items,int itemNum)
{
int i;
for (i=0;i
{
delwin(items[i]);
free(items);
}
}
zxczxc2005 回复于:2005-07-27 17:52:33up
yutian 回复于:2005-07-28 10:03:38好东东
zch 回复于:2005-08-05 08:54:01好
snow888 回复于:2005-08-07 14:38:00好复杂!
没有必要这样做啊!
可以将菜单的显示项 Item 和调用项 proc 放入指针中,程序运行要快得多,而且程序代码也要简洁得多,
C语言菜单源程序Windows系统
,
我经常这样做?
至于说上面用到的函数均是 C 中的标准窗口函数,必须要用到
#include
编译时必须用 -lcurses 参数
sunlan 回复于:2005-08-07 22:45:01可以作为示例,但在函数的封装、对二次开发的支持上还有欠缺。
应该再增加菜单的数据结构的定义。下面是我开发的一套字符界面开发库中对于菜单的一些定义,大家可以一起探讨一下:
[code:1:572e30830b]
/*********************************************
MENU defines
*********************************************/
#define ITEM_NAME_MAX 20
#define ITEM_DESC_MAX 40
#define ITEM_LEVEL_0 0 /* no sub menu */
#define ITEM_LEVEL_1 1 /* have sub menu */
#define ITEM_SEPARATOR -1 /* separate item */
#define MENU_QUIT MAX_MENU_COMMAND+1
#define MENU_SELECT MAX_MENU_COMMAND+2
#define REQ_P_LEFT_ITEM MAX_MENU_COMMAND+3 /* left item of parent
menu*/
#define REQ_P_RIGHT_ITEM MAX_MENU_COMMAND+4 /* right item of parent
menu */
typedef struct
{
unsigned int id;
char name[ITEM_NAME_MAX+1];
char discrep[ITEM_DESC_MAX+1];
unsigned int level;
void (*action)(); /*action when enter pressed*/
} SDKITEM;
typedef struct SDKMENU
{
WINDOW *win; /*menu is in this window*/
int begin_y,begin_x; /*menu's top_left conner position*/
int item_num; /*menu's item number*/
int item_curr; /*current item index of the menu*/
ITEM **items;
MENU *border;
SDKITEM *iteminfo;
struct SDKMENU *parent; /*submenu's parent,
if it's mainmenu parent==NULL
*/
} SDKMENU;
[/code:1:572e30830b]
原文转自:www.ltesting.net
篇4:这是我的一个小程序!系统管理菜单Windows系统
--------------------------主程序:------------------------- glcd.sh ---------------- whiletrue clear echo”\\n\\n\\n\\t\\t\\t农村信用社管理员菜单(v1.0) \\t\\t\\t┏━━━━━━━━━━━┓ \\t\\t\\t┃报表拷盘--------1┃ \\t\\t\\t┃发送信息--------2┃ \\t\\t\\
-------------------------- 主程序:-------------------------
glcd.sh
----------------
while true
clear
echo “\\n\\n\\n\\t\\t\\t 农村信用社管理员菜单(v1.0)
\\t\\t\\t┏━━━━━━━━━━━┓
\\t\\t\\t┃ 报表拷盘--------1 ┃
\\t\\t\\t┃ 发送信息--------2 ┃
\\t\\t\\t┃ 打印终止--------3 ┃
\\t\\t\\t┃ 软盘格化--------4 ┃
\\t\\t\\t┃ 文件编辑--------5 ┃
\\t\\t\\t┃ 查杀进程--------6 ┃
\\t\\t\\t┃ 激活终端--------7 ┃
\\t\\t\\t┃ 业务练习--------8 ┃
\\t\\t\\t┃ 发送文件--------9 ┃
\\t\\t\\t┃ 业务操作-------99 ┃
\\t\\t\\t┃ 关闭主机-------88 ┃
\\t\\t\\t┃ 使用帮助-------77 ┃
\\t\\t\\t┃ 退出程序--------0 ┃
\\t\\t\\t┗━━━━━━━━━━━┛
\\t\\t\\t 请选择:\\c”
set color -b black -k lt_red
read choice
do
case $choice in
1) sh bbkp
;;
2)sh xxfs
;;
3)clear
echo “\\n\\n”
lpstat -u > /etc/pp
if [ -s /etc/pp ]
then
list=`cat /etc/pp|awk '{print $1}'`
echo “正在处理,请稍候...\\n”
for jjj in $list
do
cancel $jjj
done
echo “所有的作业已经删除,请按任意键返回!\\n\\n”
else
echo “\\n”
echo “\\007没有要终止的打印作业!!\\n”
fi
# prompt
read key
;;
4)sh floppyfmt
;;
5) clear
cd /usr/glcd/wb
sh r
;;
6) echo “请输入终端号码”
read termid
ps -t $termid
echo “请输入以上的进程号,进程号之间用空格分开!”
read number number1 number2
/tcb/bin/asroot kill -9 $number number1 number2
;;
7) clear
echo “请输入终端号码”
read termid
/tcb/bin/asroot disable $termid
/tcb/bin/asroot enable $termid
echo “激活成功,请按回车键返回主菜单!”
read char
;;
#clear
cd /usr/glcd/xlwj
foxplus zk
;;
9) sh wjcs
#clear
#echo “请按回车键开始传送文件!\\t”
#read char
#cd /usr/glcd/dat
#ftp -ni 154.126.31.1<
#user vost qszx01a
#bin
#prompt
#cd /usr/vost/tmp
#mput *
#bye
#END
;;
8clear
echo “你确实要关闭主机吗Y/N?”
read char
case $char in
Y|y) shutdown -y -g0
;;
*) echo “按任意键返回!”
read ch
;;
esac
;;
99) cd /usr/vost
su - vost
;;
77) cd /usr/glcd
more readme
;;
0) echo “欢迎下次使用,再见!”
exit 0
;;
esac
done
;;
------------报表拷盘bbkp--------------
while true
clear
echo “\\n\\n\\n\\n\\n\\t\\t\\t\\t 报表拷盘
\\t\\t\\t┏━━━━━━━━━━━┓
\\t\\t\\t┃ ┃
\\t\\t\\t┃ 业务状况表------1 ┃
\\t\\t\\t┃ ┃
\\t\\t\\t┃ 财务损益表------2 ┃
\\t\\t\\t┃ ┃
\\t\\t\\t┃ 退 出------0 ┃
\\t\\t\\t┃ ┃
\\t\\t\\t┗━━━━━━━━━━━┛
\\t\\t\\t 请选择:\\c”
read ch
do
case $ch in
1)echo “请把软盘放到软驱当中,按Y或者y开始拷盘!\\n”
read char1
case $char1 in
y|Y) if [ -f /usr/vost/fil/SB*1.* ]
then
echo “正在拷盘,请稍候.....”
doscp /usr/vost/fil/SB*1.* a:
echo “拷盘成功,请按回车键返回!”
read char
else
echo “报表文件没有生成,请进入业务系统生成文件,按回车键确认!”
read ch
fi
esac
;;
2)
echo “请把软盘放到软驱当中,按Y或者y开始!\\n”
read char1
case $char1 in
y|Y) if [ -f /usr/vost/fil/SB*2.* ]
then
doscp /usr/vost/fil/SB*2.* a:
echo “拷盘成功,请按回车键返回!”
read char
else
echo “报表文件没有生成,请进入业务系统生成文件,按回车键确认!”
read ch
fi
esac
;;
0) exit 0
;;
esac
done
;;
------------发送信息xxfs-------------
while true
clear
echo “\\n\\n\\n\\n\\n\\t\\t\\t\\t 信息发送
\\t\\t\\t┏━━━━━━━━━━━┓
\\t\\t\\t┃ ┃
\\t\\t\\t┃ 编辑信息--------1 ┃
\\t\\t\\t┃ ┃
\\t\\t\\t┃ 发送信息--------2 ┃
\\t\\t\\t┃ ┃
\\t\\t\\t┃ 退 出--------0 ┃
\\t\\t\\t┃ ┃
\\t\\t\\t┗━━━━━━━━━━━┛
\\t\\t\\t 请选择:\\c”
read ch
do
case $ch in
1) cd /usr/glcd
vi message.txt
;;
2)clear
echo “请按回车键开始信息发送!\\n”
read char1
if [ X$char1 = “XY” -o X$char1 = “Xy” ]
then
wall message.txt|more
fi
;;
0) exit 0
;;
esac
done
;;
---------------软盘格化floppyfmt-------------------
while true
clear
echo “\\n\\n\\n\\n\\n\\t\\t\\t 格式化种类\\n
\\t\\t\\t┏━━━━━━━━━━━┓
\\t\\t\\t┃ ┃
\\t\\t\\t┃ DOS 格式--------1 ┃
\\t\\t\\t┃ ┃
\\t\\t\\t┃UNIX格式--------2 ┃
\\t\\t\\t┃ ┃
\\t\\t\\t┃ 退 出--------0 ┃
\\t\\t\\t┃ ┃
\\t\\t\\t┗━━━━━━━━━━━┛
\\t\\t\\t 请选择:\\c”
read ch
do
case $ch in
1) echo “请把要格式化的软盘放到软驱当中,按Y或者y开始格式化!\\n”
read char1
case $char1 in
y|Y)
dosformat /dev/rfd0135ds18
echo “格式化成功,请按回车键返回!”
read char
esac
;;
2)
echo “请把要格式化的软盘放到软驱当中,按Y或者y开始格式化!\\n”
read char1
case $char1 in
y|Y)
format /dev/rfd0135ds18
echo “格式化成功,请按回车键返回!”
read char
esac
;;
0) exit 0
;;
esac
done
;;
---------------发送文件wjcs--------------
while true
clear
echo “\\n\\n\\n\\n\\n\\t\\t\\t\\t报表文件传送
\\t\\t\\t┏━━━━━━━━━━━┓
\\t\\t\\t┃ ┃
\\t\\t\\t┃ 业务状况表------1 ┃
\\t\\t\\t┃ ┃
\\t\\t\\t┃ 财务损益表------2 ┃
\\t\\t\\t┃ ┃
\\t\\t\\t┃ 统计报 表------3 ┃
\\t\\t\\t┃ ┃
\\t\\t\\t┃ 中心取 表------4 ┃
\\t\\t\\t┃ ┃
\\t\\t\\t┃ 退 出------0 ┃
\\t\\t\\t┃ ┃
\\t\\t\\t┗━━━━━━━━━━━┛
\\t\\t\\t 请选择:\\c”
read ch
do
case $ch in
1) echo “请把业务状况表文件软盘放到软驱当中,按Y或者y开始传送!\\n”
read char1
case $char1 in
y|Y)mount /dev/fd0 /mnt
if [ -f * ]
then
echo “正在处理,请稍候.....\\n”
doscp a:* /usr/glcd/ywzkb
umount /mnt
else
echo “数据文件不存在,请确认!”
read ch
umount /mnt
exit 1
fi
cd /usr/glcd/ywzkb
ftp -ni 154.126.31.1<
user vost qszx01a
bin
cd /usr/vost/glcd/ywzkb
mput *
bye
END
rm /usr/glcd/ywzkb/*
echo “\\n”
echo “报表传送成功,请按回车键返回!”
read char
esac
;;
2)
echo “请把财务损益表文件软盘放到软驱当中,按Y或者y开始传送!\\n”
read char1
case $char1 in
y|Y)mount /dev/fd0 /mnt
if [ -f * ]
then
echo “正在处理,请稍候.....\\n”
if [ -f /usr/glcd/cwsyb/* ]
then
rm /usr/glcd/cwsyb/*
fi
doscp a:* /usr/glcd/cwsyb
umount /mnt
else
echo “数据文件不存在,请确认!”
read ch
umount /mnt
exit 2
fi
cd /usr/glcd/cwsyb
ftp -ni 154.126.31.1<
user vost qszx01a
bin
cd /usr/vost/glcd/cwsyb
mput *
bye
END
echo “\\n”
echo “报表传送成功,请按回车键返回!”
read char
esac
;;
3) echo “请把统计报表文件软盘放到软驱当中,按Y或者y开始传送!\\n”
read char1
case $char1 in
y|Y)mount /dev/fd0 /mnt
if [ -f /mmt/* ]
then
echo “正在处理,请稍候.....\\n”
if [ -f /usr/glcd/tjbb/* ]
then
rm /usr/glcd/tjbb/*
fi
rm /usr/glcd/tjbb/*
doscp a:* /usr/glcd/tjbb
umount /mnt
else
echo “数据文件不存在,请确认!”
read ch
umount /mnt
exit 3
fi
cd /usr/glcd/tjbb
ftp -n -i 154.126.31.1<
user vost qszx01a
bin
cd /usr/vost/glcd/tjbb
mput *.*
bye
END
echo “\\n”
echo “报表传送成功,请按回车键返回!”
read char
esac
;;
4) clear
sh zxqs
;;
0) exit 0
;;
esac
done
;;
如果大家在以上的程序遇到什么问题,请与我联系!mazhedong@citiz.net
注意:要建立一个用户可以是glcd,
这是我的一个小程序!系统管理菜单Windows系统
,
要建立一个/etc/pp文件,有执行权。
要把disable,enable,kill经过用户授权。
另外还要建立在当前目录下的几个目录,主要是xlwj,ywzkb,cwsyb,tjbb等
yutian 回复于:2003-09-03 15:36:24好象在哪里见过!!!说错了不要怪我,我没有时间来读是不是一样的
c1l2d3 回复于:2003-09-03 16:12:03并不复杂,但很实用. 顶
sdclearcase/“ target=”_blank“ >ccf 回复于:2003-09-03 17:07:32不错
wilson_chan 回复于:2003-09-04 08:59:10实用
meteor06 回复于:2003-09-04 10:51:06不错的 ;)
ycguolin 回复于:2003-09-04 14:09:00真的很好,值得一看。
凝嫣 回复于:2003-09-04 20:26:56鼓励一下
rengongpu 回复于:2003-09-04 22:33:24好。
pthcj 回复于:2003-09-04 23:25:31有可取之处。
huizhi 回复于:2003-09-05 09:13:23不错
gzjh 回复于:2003-09-05 11:48:17这种SHELL 只适合初学者,在SHELL语句没有可取之处.
mazhedong 回复于:2003-09-05 10:35:19谢谢,谢谢大家呀?这也是我一个多月来的学习结果,我也希望能和大家一起研究,共同进步。
zfl 回复于:2003-09-05 11:26:26向你学习!
inzaghi_lzhj 回复于:2003-09-08 08:49:55顶
jany 回复于:2003-09-05 19:03:32可以
光明晓仙 回复于:2003-09-05 22:32:12[img:67ac32392a]www.chinaunix.net/forum/images/avatars/userupload/14176377173eee90d64cf48.gif[/img:67ac32392a]
不知道老兄用的是什么业务系统?
Dwiner 回复于:2003-09-06 03:51:11huizhi能否提供informix下载,有的就好了、、、、、`
sdccf 回复于:2003-09-06 08:39:21unix-cd.com/softdown/index.asp?type=25
admirer 回复于:2003-09-06 09:52:12不错!
zsjyp 回复于:2003-09-06 11:30:08ding
bin8688 回复于:2003-09-07 05:22:14好,
pjjk 回复于:2003-09-07 09:08:38你的对公是网络版吧?
implinux回复于:2003-09-08 11:08:10不错
sunriseboy 回复于:2003-09-08 16:27:23不错
xianren 回复于:2003-09-08 17:16:24直接使用vi命令不好,这样不安全,失去了编菜单的意义。
mazhedong 回复于:2003-09-09 10:48:38其实也可以用软盘的呀,拷出文本文件就可以了功能一样呀?
我们是综合业务系统,包括对私、对公、信贷、中间业务,业务大综合了呀?我们的数据也大集中统一在地区级市里,听说很快要集中到省里了,全省联网了
duhengliang 回复于:2003-09-09 15:03:49我顶一下!
jsean 回复于:2003-09-10 15:48:55不错,蛮实用的,ding!!!
zengcarter 回复于:2003-09-10 16:14:04不提倡用shell做较复杂的菜单程序。
yychs 回复于:2003-09-16 22:27:08既然是金融同行,在此告诫:
安全第一!首先,明文传输太不可靠!! enable/disable终端设备时必须先杀掉所有该设备号的进程。ftp 本身并不安全。建议编写软件(如c)等为上策。
qthshilei 回复于:2003-09-17 13:23:23新手,应该鼓励一下 !!!!
foolisher 回复于:2003-09-24 22:46:40我也是中国信合的,陕西的.
horse 回复于:2003-10-13 11:03:45不错,copy一份.
原文转自:www.ltesting.net
篇5:利用C++Builder自定义Windows窗体“系统菜单”
利用C++Builder自定义Windows窗体“系统菜单”
安徽合肥智能机械研究所张建军
----------------------------------------------------------
在开发Windows应用程序时,软件人员希望所编制的程序具有风格独特的用户界面,为此不惜采用一些占用系统内存资源颇多的第三方OCX控件,结果导致程序运行速度变慢或者打包后的`安装程序体积太大的缺点。其实,如果我们仔细研究一下Windows提供的几百个WinAPI,就不难发现,通过直接调用API函数,发送、接收或者拦截系统消息等方法,同样可以实现在某些情况下只能依靠调用OCX才能达到的界面效果。
例如:为我们所熟知的屏幕抓图软件HyperSnap,在其强大的屏幕抓图功能背后,还具有一项比较特殊的界面效果。
通常情况下,当用鼠标点击一个Windows窗体左上角的Icon时,所看到的系统菜单一般都是固定不变的。
HyperSnap的窗体改变了标准“系统菜单”,增加了多个新菜单项,并分别赋予它们不同的功能。其实这种效果的实现并不复杂,主要通过调用GetSystemMenu、AppendMenu等API函数完成。下面,我们就以C++Builder为例,讨论一下如何在自己的应用程序中实现类似HyperSnap的界面效果,并给出完整代码实例。
篇6:吃了一个“螃蟹”Windows系统
这次我们安装的xxx公司的机器里面,我们发现了一个问题,虽然手册上面写可以讲tape和磁盘连接在一个bus上面。但是我们测试后发现必须将磁盘的笼子连接到另外的一个bus上面然后在接tape叫他们在不同的bus上面才可以,
xxx公司的工程师和集成商奋战了两天。后来我们说手册该重新写了。如果是在一个系统上面连接4个磁盘和一个tape的时候必须是将磁盘笼子拆了接到另外一个bus上面。
很久没有吃螃蟹了。这个螃蟹真的是比较难吃。但是吃了之后说感觉好极了:) 如果有人在出现这样的问题在现场的工程师我们都能够闭着眼镜告诉他是怎么解决的了。:)
原文转自:www.ltesting.net
篇7:请教一个问题Windows系统
%*)(*$#@#$@#@@!@!~!$#@%^$##$@^%)(*)__+**%^*(%^^% 【发表回复】【查看CU论坛原帖】【添加到收藏夹】【关闭】 向唐 回复于:2003-06-03 14:43:30 WINDOWS的用户名和密码是不是改了? 你可以使用400的用户名登录WINDOWS,密码可以跟400上的不同,连接400时输
%*&^%(**&)(*&$^%((&$#@#$@#@@!@!~!$#@&(*)(&%^$##$@^%&*&)(*)__+*&^%&*%^*(&()*_)(+^%^%&%^^%
【发表回复】【查看CU论坛原帖】【添加到收藏夹】【关闭】向唐 回复于:2003-06-03 14:43:30WINDOWS的用户名和密码是不是改了?
你可以使用400的用户名登录WINDOWS,密码可以跟400上的不同,
连接400时输入400用户的密码就可以了。
pcas400 回复于:2003-06-03 16:49:21我的机器登录WINDOWS时不需要密码,各种所有可能的密码我都试过了,都不行!
dreams76 回复于:2003-06-03 17:37:56应该是AS/400的用户和密码
居士 回复于:2003-06-03 17:47:07你在pc上建一个用户,名字和登陆400的名字一样。然后切换到这个用户登陆pc,然后访问400,按要求输入400的口令就可以了。
pcas400 回复于:2003-06-03 18:09:24谢谢居士,按你所说的方法我的问题解决了!
原文转自:www.ltesting.net
篇8:一个简单的脚本Windows系统
Shell对文本数据的处理功能非常强大,今天有一个小小的 需求 :从磁盘空间的日志中提取磁盘空间超过80%的记录,发mail给系统管理员 磁盘空间的日志格式是: 卷 总空间 已占用空间 占用百分比 脚本是这样的: cd /home/XXX/ds dslogFile=dspace_`date +%Y%m%d
Shell对文本数据的处理功能非常强大,今天有一个小小的需求:从磁盘空间的日志中提取磁盘空间超过80%的记录,发mail给系统管理员磁盘空间的日志格式是:
卷 总空间 已占用空间 占用百分比
脚本是这样的:
cd /home/XXX/ds
dslogFile=dspace_`date +%Y%m%d`.log
if [ -f $dslogFile ]
then
awk ' ~ /^P[A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9]$/ && >”80.00%“ {printf ”%10s\\t%10s\\t%20s\\t%20s\\n“, , , , }' $dslogFile | sort -r | mailx -s ”Alarm: Tight Disk Storage!!!“ XXX@mail.dcm.net
fi
#Alarm: Tight Disk Storage!!!
#First Shell Program Scripted by DCM-YXJ
原文转自:www.ltesting.net
篇9:再谈修复多操作系统启动菜单Windows系统
看了《中国电脑教育报》4月7日A22版韩群先生撰写的《Windows 98/ XP 双系统启动菜单修复》一文后,正巧我遇到了和韩先生类似的问题:电脑原来在C盘装有Windows 98,在D盘装有Windows 2003,重装了C盘的Windows 98后,双启动菜单不见了!我按照《Window
看了《中国电脑教育报》204月7日A22版韩群先生撰写的《Windows 98/XP双系统启动菜单修复》一文后,正巧我遇到了和韩先生类似的问题:电脑原来在C盘装有Windows 98,在D盘装有Windows 2003。重装了C盘的Windows 98后,双启动菜单不见了!我按照《Windows 98/XP双系统启动菜单修复》一文介绍的“运行安装程序→进入故障恢复控制台→执行Fixboot命令”的方法来修复启动菜单,但在操作后发现,虽然出现了双启动菜单,但使用启动菜单却进入了Windows 2003的安装程序中。为了找回Windows 2003,经过实践,我发现了另一条不需要进入控制台的修复方法:
1. 用Windows 2003安装盘启动电脑,进入安装程序中安装Windows 2003,安装程序将文件临时复制到硬盘之后,会重启电脑,
2. 在安装程序第一次重启电脑时,我们期待的双启动菜单就出现了,此时应迅速选择“Windows 98”启动Windows 98。否则5秒钟后电脑会自动进入Windows 2003的安装界面中。
3. 进入Windows 98后,在C盘根目录下找到Boot.ini文件,去除其 “只读”属性后打开它,将内容修改为:
[Boot Loader]
Timeout=25
Default=d:\\windows
[Operating Systems]
C:\\ = ”Microsoft Windows 98“
D:\\windows = ”Microsoft Windows 2003“
4. 退出并保存文件后,删除C盘根目录下的带有$符号的临时文件夹和临时文件,然后重启电脑,在出现的双启动菜单上选择“Microsoft Windows 2003”,我的Windows 2003顺利启动了!
作者:杨通辉
原文转自:www.ltesting.net
篇10:Windows 7系统新功能:多点触摸和跳跃菜单
Windows 7新增了许多实用的功能,有些功能虽然很小,不太引人注目,但是小细节里的隐藏着大秘密,下面我们就为大家一一解读Windows 7系统新功能小细节里的大秘密,
1、多点触摸
Windows 7的多点触控功能可谓是顺应民心,由于近两年触屏手机的大肆宣扬,电脑产品也开始跃跃欲试,而windows 7为触摸屏技术提供了发挥的软件空间,使之成为可能。
不同于一般的触摸屏,Windows 7引入了全新的多点触控概念,即一个屏幕多点操作。由于是多点触摸,机器能够感应到手指滑动的快慢以及力度(力度用触摸点的多少转换来实现),从而使操作系统应用起来更加人性化。
借助Windows7和触摸感应屏幕,只需用手指即可在电脑上翻阅在线报纸,翻阅相册,拖拽文件和文件夹。系统中的“开始”菜单和任务栏采用了加大显示、易于手指触摸的图标,常用的Windows 7程序也都支持触摸操作,甚至可以在“画图”中使用手指来画图,
相信随着技术和硬件设备的成熟、完善,科幻电影中的场景不再遥远,是不是很过瘾呢。
不过,目前Windows触控功能仅在Windows7的家庭高级版、专业版和旗舰版中提供。
2、跳跃菜单
跳跃菜单(Jump Lists)是微软Windows 7中的一项新功能,使用户可以更加容易地找到自己想要执行的相关应用程序。
一般来说,跳跃菜单被安插在开始菜单中,当用户右击任务栏中的图标时,即可实现跳跃菜单的功能。跳跃菜单功能为用户提供程序的快捷打开方式,右键单击或是直接将任务栏中的图标拖拽到跳跃菜单中即可实现。
默认情况下,跳跃菜单将会包含应用程序的快捷方式,可以切换窗口、关闭一个或者是全部窗口、直接进入具体应用程序的相关任务。而一旦用户开始使用应用程序时,跳跃菜单将会列出最近使用的文件或者应用程序的清单。
在默认情况下,IE、Windows媒体播放器以及画图工具等应用程序中,都有跳跃菜单。
★ windows 文件拒绝访问的解决之道Windows系统
一个很不错的sell 菜单Windows系统(精选10篇)




