From: "李晶" Date: 2010-07-27T18:46:19+09:00 Subject: Re: Help: How to pass a struct as a pointer to Win32API? --001636c5c18958f38a048c5b5fed Content-Type: multipart/alternative; boundary=001636c5c18958f382048c5b5feb --001636c5c18958f382048c5b5feb Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi Park, I tried both, with VirtualAllocEx and WriteProcessMemory part and without. The problem now is that I can not unpack lv_item after sendmessage. Error prompted: in "unpack": non associated pointer. I guess I can simply try to unpack pszText, i.e. 5th element of lv_item, but i don't know the length? BTW, from your code: lv_item[20,4], could you plz explain why it's 20? Wha= t I understand is there are only 15 elements. And what's more, according to MSDN, the LVITEM struct has only 14 elements. Correct me if I'm wrong. Thanks. Here attached both snippets. Thanks for your patient answer. Regards and Thanks, Jing Li 2010/7/27 Heesob Park > Hi, > > 2010/7/27 =E6=9D=8E=E6=99=B6 : > > Hi Park, > > > > Thanks for your answer, and I've tried your code, everything is fine bu= t > > nothing is retrieved for item or subitem. > > > > So the result will be like this: > > - > > - > > - > > which should be "#{item} - #{subitem}" > > > > Could you plz tell me what's wrong? Meanwhile I will investigate on > this. > > > > BTW, does it matter if I remove VirtualAllocEx and WriteProcessMemory > part? > > Since I mentioned it's not a pop-up. > > > > Thanks a lot. > > > Did you tried the whole code with VirtualAllocEx and WriteProcessMemory? > > What's your code? > > If you want to remove VirtualAllocEx and WriteProcessMemory part, > > lv_item[20,4] =3D [_item].pack('L') > should be > lv_item[20,4] =3D [item].pack('p') > > lv_item[20,4] =3D [_subitem].pack('L') > should be > lv_item[20,4] =3D [subitem].pack('p') > > > Regards, > Park Heesob > > --001636c5c18958f382048c5b5feb Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi Park,

I tried both, with VirtualAllocEx and WriteProcessMemory pa= rt and without.=C2=A0 The problem now is that I can not unpack lv_item afte= r sendmessage.=C2=A0 Error prompted: in "unpack": non associated = pointer.=C2=A0 I guess I can simply try to unpack pszText, i.e. 5th element= of lv_item, but i don't know the length?

BTW, from your code: lv_item[20,4], could you plz explain why it's = 20?=C2=A0 What I understand is there are only 15 elements.=C2=A0 And what&#= 39;s more, according to MSDN, the LVITEM struct has only 14 elements.=C2=A0= Correct me if I'm wrong.=C2=A0 Thanks.

Here attached both snippets.=C2=A0 Thanks for your patient answer.
<= br>Regards and Thanks,
Jing Li

2010/7/= 27 Heesob Park <ph= asis@gmail.com>
Hi,

2010/7/27 =E6=9D=8E=E6=99=B6 <thyr= lian@gmail.com>:
> Hi Park,
>
> Thanks for your answer, and I've tried your code, everything is fi= ne but
> nothing is retrieved for item or subitem.
>
> So the result will be like this:
> =C2=A0-
> =C2=A0-
> =C2=A0-
> which should be "#{item} - #{subitem}"
>
> Could you plz tell me what's wrong? =C2=A0Meanwhile I will investi= gate on this.
>
> BTW, does it matter if I remove VirtualAllocEx and WriteProcessMemory = part?
> Since I mentioned it's not a pop-up.
>
> Thanks a lot.
>
Did you tried the whole code with VirtualAllocEx and WriteProcessMemo= ry?

What's your code?

If you want to remove VirtualAllocEx and WriteProcessMemory part,

lv_item[20,4] =3D [_item].pack('L')
should be
lv_item[20,4] =3D [item].pack('p')

lv_item[20,4] =3D [_subitem].pack('L')
should be
lv_item[20,4] =3D [subitem].pack('p')


Regards,
Park Heesob


--001636c5c18958f382048c5b5feb-- --001636c5c18958f38a048c5b5fed Content-Type: application/octet-stream; name="with.rb" Content-Disposition: attachment; filename="with.rb" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gc4ka22t0 cmVxdWlyZSAnV2luMzJBUEknDQoNCmZpbmR3aW4gPSBXaW4zMkFQSS5uZXcoJ3VzZXIzMicsICdG aW5kV2luZG93JywgJ1BQJywgJ0wnKQ0KZ2V0ZGxnID0gV2luMzJBUEkubmV3KCd1c2VyMzInLCAn R2V0RGxnSXRlbScsICdMTCcsICdMJykNCnNlbmRtc2cgPSBXaW4zMkFQSS5uZXcoJ3VzZXIzMics ICdTZW5kTWVzc2FnZScsICdMTExQJywgJ0wnKQ0KZ2V0V2luZG93VGhyZWFkUHJvY2Vzc0lkID0g V2luMzJBUEkubmV3KCd1c2VyMzInLCAnR2V0V2luZG93VGhyZWFkUHJvY2Vzc0lkJywgJ0xQJywg J0wnKQ0Kb3BlblByb2Nlc3MgPSBXaW4zMkFQSS5uZXcoJ2tlcm5lbDMyJywgJ09wZW5Qcm9jZXNz JywgJ0xJTCcsICdMJykNCnZpcnR1YWxBbGxvY0V4ID0gV2luMzJBUEkubmV3KCdrZXJuZWwzMics ICdWaXJ0dWFsQWxsb2NFeCcsICdMUExMTCcsICdMJykNCnZpcnR1YWxGcmVlRXggPSBXaW4zMkFQ SS5uZXcoJ2tlcm5lbDMyJywgJ1ZpcnR1YWxGcmVlRXgnLCAnTExMTCcsICdMJykNCndyaXRlUHJv Y2Vzc01lbW9yeSA9IFdpbjMyQVBJLm5ldygna2VybmVsMzInLCAnV3JpdGVQcm9jZXNzTWVtb3J5 JywnTExQTFAnLCAnSScpDQpyZWFkUHJvY2Vzc01lbW9yeSA9IFdpbjMyQVBJLm5ldygna2VybmVs MzInLCAnUmVhZFByb2Nlc3NNZW1vcnknLCAnTExQTFAnLCAnSScpDQoNClBST0NFU1NfVk1fT1BF UkFUSU9OID0gMHgwOA0KUFJPQ0VTU19WTV9SRUFEID0gMHgxMA0KUFJPQ0VTU19WTV9XUklURSA9 IDB4MjANClBST0NFU1NfUVVFUllfSU5GT1JNQVRJT04gPSAweDQwMA0KTUVNX0NPTU1JVCA9IDB4 MTAwMA0KTUVNX1JFTEVBU0UgPSAweDgwMDANClBBR0VfUkVBRFdSSVRFID0gMHgwNA0KTFZNX0ZJ UlNUID0gMHgxMDAwDQpMVk1fR0VUSVRFTUNPVU5UID0gKExWTV9GSVJTVCArIDQpDQpMVk1fR0VU SVRFTVRFWFQgPSAoTFZNX0ZJUlNUICsgNDUpDQpTSVpFX09GX0xWSVRFTSA9IDYwDQoNCnJlc3Vs dHNsaXN0ID0gMHgwMDM5MEVGNA0KY291bnQgPSBzZW5kbXNnLmNhbGwocmVzdWx0c2xpc3QsIExW TV9HRVRJVEVNQ09VTlQsIDAsIG5pbCkNCnB1dHMgIkNvdW50IG9mIGl0ZW1zID0gI3tjb3VudH0i DQoNCmhlYWRlciA9IGdldGRsZy5jYWxsKHJlc3VsdHNsaXN0LCAwKQ0KcHV0cyBoZWFkZXIudG9f cygxNikudXBjYXNlDQoNCmx2X2l0ZW0gPSBbMCwgMCwgMCwgMCwgMCwgbmlsLCA1MTIsIDAsIDAs MCwwLDAsMCwwLDBdDQpsdl9pdGVtID0gbHZfaXRlbS5wYWNrKCJMaWlMTHBpaUxpaUxMTEwiKQ0K cGlkID0gMC5jaHIqNA0KZ2V0V2luZG93VGhyZWFkUHJvY2Vzc0lkLmNhbGwocmVzdWx0c2xpc3Qs IHBpZCkNCnBpZCA9IHBpZC51bnBhY2soJ0wnKS5maXJzdA0KcHJvY2VzcyA9IG9wZW5Qcm9jZXNz LmNhbGwoUFJPQ0VTU19WTV9PUEVSQVRJT058UFJPQ0VTU19WTV9SRUFEfFBST0NFU1NfVk1fV1JJ VEV8UFJPQ0VTU19RVUVSWV9JTkZPUk1BVElPTiwwLHBpZCkNCl9sdmk9dmlydHVhbEFsbG9jRXgu Y2FsbChwcm9jZXNzLCBuaWwsIFNJWkVfT0ZfTFZJVEVNLE1FTV9DT01NSVQsUEFHRV9SRUFEV1JJ VEUpDQpfaXRlbT12aXJ0dWFsQWxsb2NFeC5jYWxsKHByb2Nlc3MsIG5pbCwgNTEyLCBNRU1fQ09N TUlULFBBR0VfUkVBRFdSSVRFKQ0KX3N1Yml0ZW09dmlydHVhbEFsbG9jRXguY2FsbChwcm9jZXNz LCBuaWwsIDUxMiwgTUVNX0NPTU1JVCxQQUdFX1JFQURXUklURSkNCg0KZm9yIGkgaW4gMC4uY291 bnQNCiBsdl9pdGVtWzgsNF0gPSBbMF0ucGFjaygnTCcpDQogaXRlbSA9IDAuY2hyICogNTEyDQog bHZfaXRlbVsyMCw0XSA9IFtfaXRlbV0ucGFjaygnTCcpDQogd3JpdGVQcm9jZXNzTWVtb3J5LmNh bGwocHJvY2VzcywgX2x2aSwgbHZfaXRlbSwgU0laRV9PRl9MVklURU0sIG5pbCkNCiBzZW5kbXNn LmNhbGwocmVzdWx0c2xpc3QsIExWTV9HRVRJVEVNVEVYVCwgaSwgX2x2aSkNCg0KIHN1Yml0ZW0g PSAwLmNociAqIDUxMg0KIGx2X2l0ZW1bOCw0XSA9IFsxXS5wYWNrKCdMJykNCiBsdl9pdGVtWzIw LDRdID0gW19zdWJpdGVtXS5wYWNrKCdMJykNCiB3cml0ZVByb2Nlc3NNZW1vcnkuY2FsbChwcm9j ZXNzLCBfbHZpLCBsdl9pdGVtLCBTSVpFX09GX0xWSVRFTSwgbmlsKQ0KIHNlbmRtc2cuY2FsbChy ZXN1bHRzbGlzdCwgTFZNX0dFVElURU1URVhULCBpLCBfbHZpKQ0KDQogcmVhZFByb2Nlc3NNZW1v cnkuY2FsbChwcm9jZXNzLCBfaXRlbSwgaXRlbSwgNTEyLCBuaWwpDQogcmVhZFByb2Nlc3NNZW1v cnkuY2FsbChwcm9jZXNzLCBfaXRlbSwgc3ViaXRlbSwgNTEyLCBuaWwpDQogaXRlbSA9IGl0ZW0u c3RyaXAhDQogc3ViaXRlbSA9IHN1Yml0ZW0uc3RyaXAhDQogcHV0cyAiI3tpdGVtfSAtICN7c3Vi aXRlbX0iDQplbmQNCg0KdmlydHVhbEZyZWVFeC5jYWxsKHByb2Nlc3MsIF9sdmksIDAsIE1FTV9S RUxFQVNFKQ0KdmlydHVhbEZyZWVFeC5jYWxsKHByb2Nlc3MsIF9pdGVtLCAwLCBNRU1fUkVMRUFT RSkNCnZpcnR1YWxGcmVlRXguY2FsbChwcm9jZXNzLCBfc3ViaXRlbSwgMCwgTUVNX1JFTEVBU0Up DQoNCnB1dHMgIj09PT09PT09PT09PT09PT09PT09PSINCnNlbmRtc2cuY2FsbChyZXN1bHRzbGlz dCwgTFZNX0dFVElURU1URVhULCAxLCBsdl9pdGVtKQ0KcHV0cyBsdl9pdGVtLmluc3BlY3QNCiMg cHV0cyBsdl9pdGVtLnVucGFjaygiTGlpTExwaWlMaWlMTExMIikuaW5zcGVjdCAgI0Vycm9yIGlu ICJ1bnBhY2siOiBub24gYXNzb2NpYXRlZCBwb2ludGVy --001636c5c18958f38a048c5b5fed Content-Type: application/octet-stream; name="without.rb" Content-Disposition: attachment; filename="without.rb" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gc4ka5b71 cmVxdWlyZSAnV2luMzJBUEknDQoNCmZpbmR3aW4gPSBXaW4zMkFQSS5uZXcoJ3VzZXIzMicsICdG aW5kV2luZG93JywgJ1BQJywgJ0wnKQ0KZ2V0ZGxnID0gV2luMzJBUEkubmV3KCd1c2VyMzInLCAn R2V0RGxnSXRlbScsICdMTCcsICdMJykNCnNlbmRtc2cgPSBXaW4zMkFQSS5uZXcoJ3VzZXIzMics ICdTZW5kTWVzc2FnZScsICdMTExQJywgJ0wnKQ0KDQpMVk1fRklSU1QgPSAweDEwMDANCkxWTV9H RVRJVEVNQ09VTlQgPSAoTFZNX0ZJUlNUICsgNCkNCkxWTV9HRVRJVEVNVEVYVCA9IChMVk1fRklS U1QgKyA0NSkNCg0KcmVzdWx0c2xpc3QgPSAweDAwMzkwRUY0DQpjb3VudCA9IHNlbmRtc2cuY2Fs bChyZXN1bHRzbGlzdCwgTFZNX0dFVElURU1DT1VOVCwgMCwgbmlsKQ0KcHV0cyAiQ291bnQgb2Yg aXRlbXMgPSAje2NvdW50fSINCg0KaGVhZGVyID0gZ2V0ZGxnLmNhbGwocmVzdWx0c2xpc3QsIDAp DQpwdXRzIGhlYWRlci50b19zKDE2KS51cGNhc2UNCg0KbHZfaXRlbSA9IFswLCAwLCAwLCAwLCAw LCBuaWwsIDUxMiwgMCwgMCwwLDAsMCwwLDAsMF0NCmx2X2l0ZW0gPSBsdl9pdGVtLnBhY2soIkxp aUxMcGlpTGlpTExMTCIpDQoNCmZvciBpIGluIDAuLmNvdW50DQogbHZfaXRlbVs4LDRdID0gWzBd LnBhY2soJ0wnKQ0KIGl0ZW0gPSAwLmNociAqIDUxMg0KIGx2X2l0ZW1bMjAsNF0gPSBbaXRlbV0u cGFjaygncCcpDQoNCiBzdWJpdGVtID0gMC5jaHIgKiA1MTINCiBsdl9pdGVtWzgsNF0gPSBbMV0u cGFjaygnTCcpDQogbHZfaXRlbVsyMCw0XSA9IFtzdWJpdGVtXS5wYWNrKCdwJykNCnNlbmRtc2cu Y2FsbChyZXN1bHRzbGlzdCwgTFZNX0dFVElURU1URVhULCBpLCBsdl9pdGVtKQ0KIGl0ZW0gPSBp dGVtLnN0cmlwIQ0KIHN1Yml0ZW0gPSBzdWJpdGVtLnN0cmlwIQ0KIHB1dHMgIiN7aXRlbX0gLSAj e3N1Yml0ZW19Ig0KZW5kDQoNCnB1dHMgIj09PT09PT09PT09PT09PT09PT09PSINCnNlbmRtc2cu Y2FsbChyZXN1bHRzbGlzdCwgTFZNX0dFVElURU1URVhULCAxLCBsdl9pdGVtKQ0KcHV0cyBsdl9p dGVtLmluc3BlY3QNCiMgcHV0cyBsdl9pdGVtLnVucGFjaygiTGlpTExwaWlMaWlMTExMIikuaW5z cGVjdCAgI0Vycm9yIGluICJ1bnBhY2siOiBub24gYXNzb2NpYXRlZCBwb2ludGVyDQojcHV0cyAi XDMxMFwzMzVcMjIxXDAwMlwwMDBcMDAyIi51bnBhY2soInAiKSAjVGhlIHBvaW50ZXIgYWRkcmVz cyBJIGdldD8gIEkgZG9uJ3Qga25vdyBpZiB0aGlzIGlzIHJpZ2h0LCBidXQgIm5vbiBhc3NvY2lh dGVkIHBvaW50ZXIiIGlmIEkgdHJ5IHRvIGRpcmVjdGx5IHVucGFjayBpdA== --001636c5c18958f38a048c5b5fed Content-Type: image/png; name="without.png" Content-Disposition: attachment; filename="without.png" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gc4ka9112 iVBORw0KGgoAAAANSUhEUgAAAoQAAADXCAIAAAAMUNdoAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA B3RJTUUH2gcbCSw0XR098wAAAAd0RVh0QXV0aG9yAKmuzEgAAAAMdEVYdERlc2NyaXB0aW9uABMJ ISMAAAAKdEVYdENvcHlyaWdodACsD8w6AAAADnRFWHRDcmVhdGlvbiB0aW1lADX3DwkAAAAJdEVY dFNvZnR3YXJlAF1w/zoAAAALdEVYdERpc2NsYWltZXIAt8C0jwAAAAh0RVh0V2FybmluZwDAG+aH AAAAB3RFWHRTb3VyY2UA9f+D6wAAAAh0RVh0Q29tbWVudAD2zJa/AAAABnRFWHRUaXRsZQCo7tIn AAANVUlEQVR4nO3dPZKjSBoGYM3snmFjjb1BG222y9HqQGOM2SZmtVcdUe3PTbSGogkEmalMBPqQ eB6rKoVeEvST+kAi//X58f6f//7vdDr9888/JwDgsc7n85/RfQCAQ/v188e/J0193w9/d133yN40 GfpZ38nLXfa8UTnP8qAAsMCXr9+uKuNhuLq844/HgLWskjkeVu8M3GIb1/WABwWAQFeV8QMKx9UH kqbezhd+ioFNKQzw2r58/TY9TD0YjwHJw6Tz8jRZuk2WP7UcYV7r8Gyh/8n+lJcv31TTz0IUAEfz 6+eP21/gWnaYdL78MN50vy1b7/iP1s5MGpP9KW/vpXF804L9083cvMuwsYZtgBdTqox3q+u6XR1R v/Sn7/vKYTUZfvOOw0h/WVFl3wDYv8S3qQcHr8MWnI2u32OH3asAzF19m7rpKPSd6o8wP0auPzX9 nBxAXn279ravAFjXr58//vj8eP/r7+/DO/7N7y6Nq7rx+eBhQMp9sWt+l5v9a+pMZU4uLdnJ+ZLJ fxd0qcnW+QAEOp/Pp8+P97e3N2/xABDi8+Pd5TABINL0ClwAwINV/c4YANiOyhgAgqmMASCYyhgA gk2vwFU5QcIpc4GLwlUvbv4et+n3xwDwMq4q49yEBzUTKiQv8TG5VnNhQoXJTQBwHFfnjOvHwvli hes13sw8+EWwATi4JeeM5+Nu+crJk1mGXGYZAMYSszYVzt2Wy9+bg/SwTLIUds4YgGNKVMbJc7qT m8bKI3TynHHyjoX1AsALW/I74/l4XK5lW5cHgEOZfpu6sio1ox8ArGU6n/HqvzPOnRie3GR0B+Cw zGcMAMHMZwwAwVybGgCCmbUJAIKpjAEgmMoYAIKpjAEgmMoYAIKpjAEgmMoYAIKpjAEgWGI+47nC takBgDt9+frt9mBs3AWA7ThnDADBnDMGgGAqYwAIpjIGgGAqYwAIpjIGgGAqYwAIpjIGgGAqYwAI pjIGgGAqYwAIpjIGgGAqYwAIpjIGgGDmMwaAYOYzBoBgzhkDQDDnjAEgmMoYAIKpjAEgmMoYAIKp jAEgmMoYAIKpjAEgmMoYAIKpjAEgmMoYAIKpjAEgmMoYAIKpjAEgmPmMASCY+YwBIJhzxgAQzDlj AAimMgaAYCpjAAimMgaAYCpjAAimMgaAYCpjAAimMgaAYCpjAAimMgaAYCpjAAimMgaAYCpjAAhm PmMACGY+YwAI5pwxAARzzhgAgqmMASCYyhgAgqmMASCYyhgAgqmMASCYyhgAgqmMASCYyhgAgqmM ASCYyhgAgqmMASDYdNam+WyJlymbtL92OwCBfv38cfr8eH97e/OmDAAhzuezylg7AJFUxgAQ7Hw+ +wIXAETybWoACOZ3xgAQTGUMAMFUxgAQTGUMAMFUxgAQTGUMAMFUxgAQ7NfPH4nLYY4vnVi+Mtfk 8orDwq3t8uUfIX+4tfKCd3vrv3z58jfK//L129XlMPu+H5ab/J1c07h9+Le1Xb78I+Qn/32i/suX L3+7/M+P99rD1Mn13by1vl2+/NfOn7wIV88vt8uXL3/P+dNzxpO6e/h3fOB62ZrK7fLlv3x+13W5 41pP0X/58uVvl5/4NvVkAK5cX/ldpqZdvvzj5OeWfJb+y5cvf938tm9TJ9e31scN+fKPkF/wFP2X L1/+FvnNvzNOru/+jxXy5R8nv+Ap+i9fvvzV85f8zniyvhW3RL78l8+/aef9ly9f/hb5v37++OPz 4/2vv7/3fV8owOf6vu+6LvcRoLVdvvyXz5+/vp6r//Lly98u/3w+X/3OGAB4sIbfGQMAW3BtagAI ZtYmAAimMgaAYCpjAAimMgaAYOn5jAc3f+9U8zuqccg9+bmc3I+3albRlD++tfKXYPf8jq1mFdv9 Tu7+/Gfvv3z58uU/LP9qPuO+78cLjf9NjnO55Sd3TP7dmt/69xb5uZaa/FNm/+Ta58usmz9fnf7L ly9fflR+9nfG8/Tk+pK3dl3X+pEh2ZLLqcmvWeOChEJI/f6pv9d2+fc8vvX32i5/6/7Lly9f/iPz 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 aLdgo2oAAAAASUVORK5CYII= --001636c5c18958f38a048c5b5fed--