搜索
查看: 18809|回复: 22

[win] 登陆窗口

    [复制链接]

23

主题

311

帖子

1806

积分

荣誉会员

Rank: 8Rank: 8

积分
1806
发表于 2011-8-14 05:35:56 | 显示全部楼层 |阅读模式
本帖最后由 游戏 于 2011-8-14 05:38 编辑

这里要实现一个简单的登陆窗口:
       打开程序时,先弹出登陆对话框,要求用户输入用户名和密码,只有用户名和密码都正确了,才能进入主窗口。

主窗口位置:\main.aardio;
主窗口代码:

import win.ui;
import web.form
/*DSG{{*/
var winform = win.form(parent=...; edge=1;bottom=249;text="已经登陆";border="dialog frame";right=349 )
winform.add(
static={ bottom=135;color=255;right=265;left=84;top=101;font=LOGFONT( name=
"宋体";h=-29;out=3;family=2;clip=2;quality=1 );z=1;text="Hello world!";transparent=1;cls="static" }
)
/*}}*/

var loginForm = winform.loadcode("\res\login.aardio" );
loginForm.show(
true);

win.loopMessage();


————————————————————————————————————————————————————

登陆窗口位置:\res\login.aau;
登陆窗口代码:

import win.ui;
/*DSG{{*/
var winform = win.form(parent=...; edge=1;bottom=189;max=false;right=349;border="dialog frame";text="登陆窗口" )
winform.add(
ed_pass={ bottom=85;right=282;left=130;top=61;font=LOGFONT( name=
"宋体";h=-12 );tabstop=1;z=5;text="";edge=1;cls="edit" };
static3={ right=239;bottom=124;text=
"默认账号,密码: admin";left=115;top=107;font=LOGFONT( name="宋体";h=-12 );transparent=1;z=3;cls="static" };
btn_login={ bottom=171;text=
"登陆";left=58;top=135;font=LOGFONT( name="宋体";h=-12 );z=7;right=149;cls="button" };
ed_name={ bottom=44;right=281;left=129;top=20;font=LOGFONT( name=
"宋体";h=-12 );tabstop=1;z=6;text="";edge=1;cls="edit" };
static={ right=123;bottom=43;text=
"账号:";left=61;top=26;font=LOGFONT( name="宋体";h=-12 );transparent=1;z=1;cls="static" };
btn_exit={ bottom=171;text=
"退出";left=208;top=135;font=LOGFONT( name="宋体";h=-12 );z=4;right=299;cls="button" };
static2={ right=124;bottom=84;text=
"密码:";left=62;top=67;font=LOGFONT( name="宋体";h=-12 );transparent=1;z=2;cls="static" }
)
/*}}*/

var flag = false;

winform.btn_exit.oncommand =
function(id,event){
    winform.close();
}

winform.btn_login.oncommand =
function(id,event){
   
if(!(winform.ed_name.text = "admin" and winform.ed_pass.text = "admin")){
        winform.msgbox(
"用户名或密码错误!","错误")
        
return ;
    }
   
    flag =
true;
    winform.close();
}

winform.wndproc =
function(hwnd,message,wparam,lparam){
   
select(message) {//判断消息类型
        case 0x10/*_WM_CLOSE窗口关闭消息*/{
            
if(flag){
                winform.parent.show();
            }
            
else {
                winform.parent.close();
            }
        }
    }
}

winform.show()
win.loopMessage();
return winform;




回复

使用道具 举报

75

主题

850

帖子

4999

积分

六级会员

The only one

Rank: 9Rank: 9Rank: 9

积分
4999
发表于 2011-8-14 07:48:21 | 显示全部楼层

[i=s] 本帖最后由 look 于 2011-8-14 08:28 编辑 [/i] 这样似乎不合理,我一开始也是这么设计的,可是后来一想,如果有人,停留在登

本帖最后由 look 于 2011-8-14 08:28 编辑

这样似乎不合理,我一开始也是这么设计的,可是后来一想,如果有人,停留在登陆窗口,不登陆,用工具遍历窗口,查到主窗口句柄,显示主窗口,就可以绕过登陆窗口,直接进入主窗口!


//这样就被破解了!
import winex;
var hwnd=winex.find("AAU_FORM","已经登陆")
win.show(hwnd);


小时候,幸福是一件东西,拥有就是幸福; 长大了,幸福是一个目标,达到就是幸福; 成熟后,发现幸福原来是一种心态,领悟就是幸福.
回复

使用道具 举报

23

主题

311

帖子

1806

积分

荣誉会员

Rank: 8Rank: 8

积分
1806
 楼主| 发表于 2011-8-14 11:11:48 | 显示全部楼层

[quote][size=2][color=#999999]look 发表于 2011-8-14 07:48[/color] [url=forum.php?mo

look 发表于 2011-8-14 07:48
这样似乎不合理,我一开始也是这么设计的,可是后来一想,如果有人,停留在登陆窗口,不登陆,用工具遍历窗口,查到 ...

这样的确可以绕过登陆窗口,版主真细心。
只要 再建一个子窗口 用来做为登陆以后的窗口,这样应该没办法绕过登陆了。
回复

使用道具 举报

43

主题

679

帖子

3805

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3805
发表于 2011-8-14 11:37:17 | 显示全部楼层

[i=s] 本帖最后由 编程 于 2011-8-14 12:11 编辑 [/i] main.aau [quote][color=#0000ff]import

本帖最后由 编程 于 2011-8-14 12:11 编辑

main.aardio
import win.ui;
/*DSG{{*/
var winform = win.form(parent=...; edge=1;bottom=249;text="已经登陆";border="dialog frame";right=349 )
winform.add(
static={ bottom=135;color=255;right=265;left=84;top=101;z=1;text=
"Hello world!";transparent=1;cls="static" }
)
/*}}*/

var loginForm = winform.loadcode("\res\login.aardio" );
var logined = loginForm.doModal(winform)

//如果没有登录,直接退出主程序
if( ! logined )
   
return;
   
//所有需要登录后才能执行的函数、事件都写在这后面
   
//显示主窗口   
winform.show()
win.loopMessage();

\res\login.aau
import win.ui;
/*DSG{{*/
var winform = win.form(parent=...; edge=1;bottom=189;max=false;right=349;border="dialog frame";text="登陆窗口" )
winform.add(
ed_pass={ bottom=85;right=282;left=130;top=61;font=LOGFONT( name=
"宋体";h=-12 );tabstop=1;z=5;text="";edge=1;cls="edit" };
static3={ right=239;bottom=124;text=
"默认账号,密码: admin";left=115;top=107;font=LOGFONT( name="宋体";h=-12 );transparent=1;z=3;cls="static" };
btn_login={ bottom=171;text=
"登陆";left=58;top=135;font=LOGFONT( name="宋体";h=-12 );z=7;right=149;cls="button" };
ed_name={ bottom=44;right=281;left=129;top=20;font=LOGFONT( name=
"宋体";h=-12 );tabstop=1;z=6;text="";edge=1;cls="edit" };
static={ right=123;bottom=43;text=
"账号:";left=61;top=26;font=LOGFONT( name="宋体";h=-12 );transparent=1;z=1;cls="static" };
btn_exit={ bottom=171;text=
"退出";left=208;top=135;font=LOGFONT( name="宋体";h=-12 );z=4;right=299;cls="button" };
static2={ right=124;bottom=84;text=
"密码:";left=62;top=67;font=LOGFONT( name="宋体";h=-12 );transparent=1;z=2;cls="static" }
)
/*}}*/

winform.btn_exit.oncommand =
function(id,event){
     winform.endModal()
}

winform.btn_login.oncommand =
function(id,event){
   
if(!(winform.ed_name.text = "admin" and winform.ed_pass.text = "admin")){
        winform.msgbox(
"用户名或密码错误!","错误")
        
return;
    }
   
    winform.endModal(
"登录成功" )
}

return winform;

点评

同意: 5.0 真棒: 5.0
同意: 5 真棒: 5
这代码不错,不过注册过的直接保存配置 下次不再进入注册界面不是更理想?  发表于 2012-4-28 21:15
这个代码有些问题吧,退出会进入到主窗口  发表于 2011-8-14 11:45
回复

使用道具 举报

10

主题

71

帖子

492

积分

荣誉会员

Rank: 8Rank: 8

积分
492
发表于 2011-8-14 11:41:44 | 显示全部楼层

我也在搞这个,汗的,看看好!

我也在搞这个,汗的,看看好!
回复

使用道具 举报

39

主题

195

帖子

1269

积分

四级会员

Rank: 6Rank: 6

积分
1269
发表于 2011-8-14 11:48:12 | 显示全部楼层

呵呵。昨天和lujjjh大哥纠结了一下午,没有完美解决方案,晚上又和“游戏”大侠讨论这个,终于解决了,1楼源码是比较完美的父子窗口的一个demo了

呵呵。昨天和lujjjh大哥纠结了一下午,没有完美解决方案,晚上又和“游戏”大侠讨论这个,终于解决了,1楼源码是比较完美的父子窗口的一个demo了
回复

使用道具 举报

43

主题

679

帖子

3805

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3805
发表于 2011-8-14 12:07:24 | 显示全部楼层

to ninja911: 1楼的代码写的纠结就算了,居然还是一堆人纠结出来的。 to fanishare: 代码测试没有问题, 发贴的时候把 lo

to ninja911:
1楼的代码写的纠结就算了,居然还是一堆人纠结出来的。

to fanishare:
代码测试没有问题,
发贴的时候把 logined改成winform.logined 了,忘记了winform对所有空值会返回一个table,
所以你会看到主窗口,我已经改过来了,谢谢提醒!
回复

使用道具 举报

0

主题

13

帖子

128

积分

一级会员

Rank: 2

积分
128
发表于 2011-8-14 12:47:16 | 显示全部楼层

CC{:3_57:}

CC
回复

使用道具 举报

39

主题

195

帖子

1269

积分

四级会员

Rank: 6Rank: 6

积分
1269
发表于 2011-8-14 12:48:17 | 显示全部楼层

一个比一个NB!! 赞一个

一个比一个NB!! 赞一个
回复

使用道具 举报

51

主题

266

帖子

1553

积分

四级会员

Rank: 6Rank: 6

积分
1553
发表于 2011-8-14 14:10:31 | 显示全部楼层

[quote][size=2][color=#999999]编程 发表于 2011-8-14 12:07[/color] [url=forum.php?mod=

编程 发表于 2011-8-14 12:07
to ninja911:
1楼的代码写的纠结就算了,居然还是一堆人纠结出来的。

为什么不用主窗口作为登录窗口,而子窗口作为主界面呢?

还可以给不同的用户给予不同的界面、权限等等。
回复

使用道具 举报

43

主题

679

帖子

3805

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3805
发表于 2011-8-14 15:24:23 | 显示全部楼层

[quote][size=2][color=#999999]o00viw 发表于 2011-8-14 14:10[/color] [url=forum.php?

o00viw 发表于 2011-8-14 14:10
为什么不用主窗口作为登录窗口,而子窗口作为主界面呢?

还可以给不同的用户给予不同的界面、权限等等 ...

嗯,这方法也不错,更简单,功能还可以更多。
技术真的不重要,重要的是思路,有好的思路,总是可以化繁为简。
回复

使用道具 举报

10

主题

71

帖子

492

积分

荣誉会员

Rank: 8Rank: 8

积分
492
发表于 2011-8-14 19:54:13 | 显示全部楼层

编程的代码确实干练,呵呵,就是俺是初学者,还不是很明白一些命令的作用,domodal和endmodal等。

编程的代码确实干练,呵呵,就是俺是初学者,还不是很明白一些命令的作用,domodal和endmodal等。
回复

使用道具 举报

39

主题

195

帖子

1269

积分

四级会员

Rank: 6Rank: 6

积分
1269
发表于 2011-8-15 15:52:19 | 显示全部楼层

继续发问 如果登录成功,进入父窗口,那么父窗口有一个按钮“注销”,点击注销后,怎么才能隐藏父窗口,然后又显示出登录子窗口呢??

继续发问

如果登录成功,进入父窗口,那么父窗口有一个按钮“注销”,点击注销后,怎么才能隐藏父窗口,然后又显示出登录子窗口呢??
回复

使用道具 举报

75

主题

850

帖子

4999

积分

六级会员

The only one

Rank: 9Rank: 9Rank: 9

积分
4999
发表于 2011-8-15 19:02:08 来自手机 | 显示全部楼层

[i=s] 本帖最后由 look 于 2011-8-15 19:03 编辑 [/i] [quote][color=#999999]ninja911 发表于 2

本帖最后由 look 于 2011-8-15 19:03 编辑
ninja911 发表于 2011-8-15 15:52 继续发问 如果登录成功,进入父窗口,那么父窗口有一个按钮“注销”,点击注销后,怎么才能隐藏父窗口, ...
代码都有现成的了,组织一下就可以了!把你的问题想清楚,你是不知道怎么隐藏窗口吗?你是不知道怎样再次显示登录子窗体吗?百度或谷歌站内搜索"隐藏"、"子窗体"试试!
回复

使用道具 举报

39

主题

195

帖子

1269

积分

四级会员

Rank: 6Rank: 6

积分
1269
发表于 2011-8-15 19:49:17 | 显示全部楼层

[quote][size=2][color=#999999]look 发表于 2011-8-15 19:02[/color] [url=forum.php?mo

look 发表于 2011-8-15 19:02
代码都有现成的了,组织一下就可以了!把你的问题想清楚,你是不知道怎么隐藏窗口吗?你是不知道怎样再次显 ...

就类似于QQ,已经登陆上线。然后我想切换QQ号登陆,又会弹出QQ登陆界面。
回复

使用道具 举报

0

主题

3

帖子

46

积分

一级会员

Rank: 2

积分
46
发表于 2011-8-25 01:42:03 | 显示全部楼层

不是很懂呀

不是很懂呀
回复

使用道具 举报

0

主题

4

帖子

45

积分

一级会员

Rank: 2

积分
45
发表于 2012-1-12 09:29:57 | 显示全部楼层

学习了,呵呵

学习了,呵呵
回复

使用道具 举报

12

主题

33

帖子

193

积分

一级会员

Rank: 2

积分
193
发表于 2012-4-26 12:48:39 | 显示全部楼层

mark

mark
回复

使用道具 举报

0

主题

7

帖子

39

积分

新手入门

Rank: 1

积分
39
发表于 2013-1-18 16:51:53 | 显示全部楼层

这个留着!谢谢楼主啊!嘿嘿!

这个留着!谢谢楼主啊!嘿嘿!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-7-21 09:42 , Processed in 0.078125 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表