编程论坛
注册
登录
编程论坛
→
VB6论坛
求助:希望大家给个好的意见
hnhhzhb1977
发布于 2021-09-26 14:52, 1309 次点击
一个基数A ,如果A+1则显示控件S(0),如果A+2则显示控件S(1),如果A+4则显示S(2),依次类推到A+2^6,则显示控件S(5),但如果是A+3则显示了控件S(0)+S(1),A+6 则显示S(1)+S(2),A+7则显示S(0)+S(1)+S(2),也依次类推,如果是A+2^7-1则显示全部,即S(0)-S(5)全部显示,
问:知道一个数M,如何知道显示了那几个控件,禁止用枚举。
望解答
3 回复
#2
hnhhzhb1977
2021-09-26 15:24
另外附上一贴问题解决办法
如果 OpenProcess(PROCESS_ALL_ACCESS, False, lppid)返回值为0,则可能是权限不够,需要用AdjustTokenPrivileges来提高权限。
如果内存属性为“只读”或者“只执行”则用VirtualAllocEx设置为PAGE_READWRITE
这些都成功了,但WriteProcessMemory仍然失败,可用ReadProcessMemory PHandle, ByVal lpAddress, ByVal VarPtr(GetData), DtLen, 0&来调试,入果read成功,应该考虑为360原因,可以关闭360助手试试。我就是卡在这里了,最后发现是360原因。
360会拦截WriteProcessMemory,VirtualAllocEx,VirtualProtect此类API
解决办法,打开kernel32.dll重命名后保存在你的程序路径下,声明API时指出具体路径,可以规避360拦截。
#3
sssooosss
2021-09-27 08:14
共同学习
#4
hnhhzhb1977
2021-09-29 13:04
要我自己解决??
m = CLng(Text1.Text) 'M<2^7
n=m-a&
for i=0 to 5
s1 = n Mod 2
if s1=1 then
Print "s(" & i & ") is show"
else
Print "s(" & i & ") is hide"
end if
n = n \ 2
next
1