首页
社区
课程
招聘
[求助]关于IDA Plug-in编写的问题
发表于: 2010-3-22 10:27 4101

[求助]关于IDA Plug-in编写的问题

2010-3-22 10:27
4101
【问题描述】在利用SDK提供的接口编写dialog时,dialog中按钮的响应函数能否改变dialog中其他item(控件)的值呢?示意程序如下。
【示意程序】
#include <ida.hpp>
#include <idp.hpp>
#include <loader.hpp>

int plugin_init(void);
void plugin_term(void);
void plugin_run(int arg);

char *plugin_comment = NULL;
char *plugin_help = NULL;
char *plugin_name = "MyTest";
char *plugin_hotkey = "Alt-T";

plugin_t PLUGIN =
{
        IDP_INTERFACE_VERSION,
        0,
        plugin_init,
        NULL,
        plugin_run,
        plugin_comment,
        plugin_help,
        plugin_name,
        plugin_hotkey       
};

////////////////////////////////////////////////////////////////

int plugin_init(void)
{       
        return PLUGIN_KEEP;
}

void plugin_term(void)
{       
        return;
}

void idaapi ButtonFcn(TView *fields[], int code)
{
        msg("The button was pressed!\n");       
        // 此时,如何通过 fields 参数改变 dialog 中字符输入框的值呢?
           // SDK 头文件中没有关于 TView 的接口的描述 :(
}

void plugin_run(int arg)
{       
        char input[MAXSTR];       
        qstrncpy(input, "initial value", sizeof(input));
       
        char *dialog =
                "STARTITEM 0\n"
                "This is test of AskUsingForm_c()\n\n"        // title of the dialog                               
                "<String:A:32:::>\n"                                       
                "<Button:B::::>\n";               

        int ret = AskUsingForm_c(dialog, input, ButtonFcn);       
        if (ret == 1) // dialog 中“OK”按钮被按下
                msg("String: %s\n", input);               
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 440
活跃值: (717)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
2
fields数组中保存的是控件的句柄
如果你用bcb的话,可以这样来
pedt1 =  (TEdit*)fields[0];
pedt1->Text = "111"
2010-3-22 12:15
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
多谢啦
以前没有用过bcb的控件进行界面设计,看来IDA Pro SDK的界面API对bcb进行了封装。正像你代码中描述的那样,了解了各个控件所对应的类的接口,才能对各个空间进行操作。
再次感谢
[QUOTE=winndy;779752]fields数组中保存的是控件的句柄
如果你用bcb的话,可以这样来
pedt1 =  (TEdit*)fields[0];
pedt1->Text = "111"[/QUOTE]
2010-3-23 11:26
0
游客
登录 | 注册 方可回帖
返回
//