设为首页收藏本站喵玉殿官方微博

喵玉殿论坛 · 喵玉汉化组

 找回密码
 少女注册中
搜索
楼主: 漆黑之翼

[编程算法] 东方Project启动器【第三版】

  [复制链接]
发表于 2011-4-9 14:26:01 | 显示全部楼层
本帖最后由 十二 于 2011-4-9 14:28 编辑

回复 hasai02 的帖子

LZ的启动器是用gethostname、gethostbyname、inet_ntoa实现的ip获取。

hostent结构里记录了Ip地址。看了一下gethostbyaddr的原型这个函数似乎是得到指定主机的hostent结构的函数。感觉可以用这函数得到指定ip的主机名

如果获取ip可以尝试用主机名和gethostbyname函数来得到hostent结构



还有hostent结构 char **h_addr_list ,OD下显示还有一个内网ip的指针。

回复 支持 反对

使用道具 举报

发表于 2011-4-9 14:33:51 | 显示全部楼层
回复 十二 的帖子

刚才试验了下gethostbyname....失败.......
它返回给我的是内网的ip.......orz.......
(我只是想要一个双击之后它能自动把外网ip给我复制到剪贴板的工具而已啊!...........orz)

点评

这种东西真的需要么XSK,.,.3个月前做过的说XSK  发表于 2011-4-18 20:41
回复 支持 反对

使用道具 举报

发表于 2011-4-9 15:49:53 | 显示全部楼层
求源代码学习用

点评

哦哦!~ 感谢 =w=  发表于 2011-4-9 22:17
小小工程,不成敬意  发表于 2011-4-9 21:10
回复 支持 反对

使用道具 举报

发表于 2011-4-9 17:14:27 | 显示全部楼层
本帖最后由 十二 于 2011-4-10 11:58 编辑

回复 hasai02 的帖子

修改了一下IDA的hex-ray结果
  1. {
  2.         HGLOBAL hmem;
  3.         LPVOID firstmem;
  4.         const WCHAR *buffer;
  5.         struct hostent *hostent;
  6.         struct WSAData WSAData;
  7.         char name;
  8. }

  9.   if ( !WSAStartup(2u, &WSAData) )  
  10.   {
  11.     if ( !gethostname(&name, 255) )
  12.     {
  13.       hostent = gethostbyname(&name);
  14.       if ( hostent )
  15.       {
  16.         buffer = inet_ntoa(**(struct in_addr **)hostent->h_addr_list);
  17.       }
  18.     }
  19.     WSACleanup();
  20.   }

  21.   if ( OpenClipboard(NULL)
  22.   {
  23.     EmptyClipboard();
  24.     hmem = GlobalAlloc(GMEM_FIXED,GMEM_DDESHARE, buffer);
  25.     firstmem = GlobalLock(hmem);
  26.     GlobalUnlock(hmem);
  27.     SetClipboardData(1u, hmem);
  28.     CloseClipboard();
  29. }
复制代码
获取Ip的关键代码,函数参数我木有头文件所以全是16进制的  - =。
回复 支持 反对

使用道具 举报

发表于 2011-4-9 18:25:35 | 显示全部楼层
我喜歡,遊戲一般不放桌面
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-4-10 22:45:14 | 显示全部楼层
回复 十二 的帖子

十二大我有个问题,我发现通过这个打开星莲船(汉化版)的时候没BGM只有SE
试了下Winexec也不行,不知道是神马原因
回复 支持 反对

使用道具 举报

发表于 2011-4-11 10:35:54 | 显示全部楼层
回复 漆黑之翼 的帖子

尝试createprocess后用closehandle断开程序和进程的关系。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-4-11 16:19:44 | 显示全部楼层
本帖最后由 漆黑之翼 于 2011-4-11 16:30 编辑

回复 十二 的帖子

唔,closehandle没用
再看了一遍CreateProces的说明后,抱着尝试的心态把lpCurrentDirectory的参数填了上去:
CreateProcess(path[wparam],NULL,NULL,NULL,false,NULL,NULL,_T("G:\\東方\\上海アリス幻樂団\\[TH12]東方星蓮船"),&si,&pi);
然后竟然可以了
看来星莲船采用了不同的方法访问外部文件?
回复 支持 反对

使用道具 举报

发表于 2011-4-11 17:38:48 | 显示全部楼层
回复 漆黑之翼 的帖子

访问文件可以用相对路径。
回复 支持 反对

使用道具 举报

发表于 2011-4-16 15:30:22 | 显示全部楼层
类似这种的?

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 少女注册中

本版积分规则

合作与事务联系|小黑屋|手机版|无图版|喵玉殿

GMT+8, 2024-5-19 02:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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