C#中使用Win API进行跨进程为日期控件,Grid列表控件赋值

Valyce 2010-01-28 04:57:12
日期控件在进程内可以赋值,跨进程就不行了?
Grid列表控件如何添加,修改,删除值呢???
大虾帮忙!!!!
...全文
99 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Valyce 2010-02-09
  • 打赏
  • 举报
回复
没人顶了,大虾出现呀,顶的给分呦。大虾,大虾哪去了???
Valyce 2010-02-09
  • 打赏
  • 举报
回复
那位大虾能帮小弟一个忙,把我的一段delphi代码生成类库给我啊,或翻译成C#代码,就散分呀
procedure TForm1.Button1Click(Sender: TObject);
var
Mwd,Cwd :LongInt ;
st : TSystemTime;
pid,phd:thandle;
p:pointer;
l:dword;
b:boolean;
nm:NMHDR;
tg:tagNMDATETIMECHANGE;
begin
Mwd :=FindWindow(nil,'TEST3');
if (mwd=0) then
begin
ShowMessage('error1');
exit;
end;
Cwd :=FindWindowEx(Mwd,0,'TDateTimePicker',nil);
if(cwd=0) then
begin
ShowMessage('error2');
exit;
end;
GetWindowThreadProcessId(mwd,pid);
phd:=openprocess(PROCESS_ALL_ACCESS,false,pid);
p:=VirtualAllocEx(phd,nil,sizeof(tg), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
if (p=nil) then
begin
ShowMessage('error3');
CloseHandle(phd);
exit;
end;
l:=0;
DateTimeToSystemTime(Date-2, st);
nm.hwndFrom:=cwd;
nm.idFrom:=0;
nm.code:=DTN_DATETIMECHANGE;
tg.nmhdr:=nm;
tg.dwFlags:=GDT_VALID;
tg.st:=st;
b:=WriteProcessMemory(phd,p,@tg,sizeof(tg),l);
if ((not b )or (l<>sizeof(tg)) )then
begin
ShowMessage('error4');
CloseHandle(phd);
exit;
end;
Postmessage(cwd, WM_NOTIFY,0, Longint(p)); //cwd也可为mwd
Sleep(100); //不能马上释放内存,因为目标还未收到
if ( VirtualFreeEx(phd,p,0, MEM_RELEASE))=nil then
begin
Showmessage('error5');
end;
CloseHandle(phd);
end;
Valyce 2010-01-28
  • 打赏
  • 举报
回复
一楼的话没说完呢,大虾救命,顶呀。。。。
hhhh63 2010-01-28
  • 打赏
  • 举报
回复
日期控件,Grid列表控件不是windows的标准控件,是.net框架后加上的,所以不能用Win API对这些控件赋值。
不过对具体的例子应该有可能用win api来处理。

111,122

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧