<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS: Указатель на переменную]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=6625</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6625&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: Указатель на переменную».]]></description>
		<lastBuildDate>Sun, 01 Jan 2012 10:59:33 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBS: Указатель на переменную]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55219#p55219</link>
			<description><![CDATA[<p>Почитайте документацию по DWX, про передачу строк там написано. Для получения строк, нужно передать указатель на буфер, его можно выделить, с помощью метода Space, но я всегда использую системные ф-и работы с кучей HeapAlloc/HeapFree.</p>]]></description>
			<author><![CDATA[null@example.com (chessman)]]></author>
			<pubDate>Sun, 01 Jan 2012 10:59:33 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55219#p55219</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Указатель на переменную]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55217#p55217</link>
			<description><![CDATA[<div class="quotebox"><cite>chessman пишет:</cite><blockquote><p>Если делать через DWX,то с простыми типами все гораздо проще. Что за параметр нужно передать?</p></blockquote></div><p>В текущей функции передаются указатели на строковые переменные. Причём из одних переменных функция значение считывает, в другие - пишет.<br />В целом, хотелось бы найти общий способ для передачи/считывания указателей на разные типы данных. Как минимум неплохо знать об особенностях обмена указателями на строки и целые числа.</p><p>Так что там с DWX?</p>]]></description>
			<author><![CDATA[null@example.com (Vladimir)]]></author>
			<pubDate>Sun, 01 Jan 2012 10:14:55 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55217#p55217</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Указатель на переменную]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55216#p55216</link>
			<description><![CDATA[<div class="quotebox"><cite>chessman пишет:</cite><blockquote><p>Если делать через DWX,то с простыми типами все гораздо проще. Что за параметр нужно передать?</p></blockquote></div><p>Тут надо учесть, что Rundll передаёт параметры в вызываемую функцию в виде строки. Из своей командной строки Rundll вырезает часть, предназначенную для функции, и передаёт её ей в третьем параметре. Потом функция должна распарсить эту строку на отдельные элементы. Так что числа должны передаваться в строковом виде.</p><p>Вот пример функции, вызываемой через Rundll:<br /></p><div class="codebox"><pre><code>VOID CALLBACK InstallHinfSection(
  __in  HWND hwnd,
  __in  HINSTANCE ModuleHandle,
  __in  PCTSTR CmdLineBuffer,
  __in  INT nCmdShow
);

Parameters
hwnd [in] 
The parent window handle. Typically hwnd is Null.

ModuleHandle [in] 
Reserved and should be Null.

CmdLineBuffer [in] 
Pointer to buffer containing the command line. You should use a null-terminated string.

nCmdShow [in] 
Reserved and should be zero.

Return Value
This function does not return a value.</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sun, 01 Jan 2012 04:21:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55216#p55216</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Указатель на переменную]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55212#p55212</link>
			<description><![CDATA[<p>Если делать через DWX,то с простыми типами все гораздо проще. Что за параметр нужно передать?</p>]]></description>
			<author><![CDATA[null@example.com (chessman)]]></author>
			<pubDate>Sat, 31 Dec 2011 17:45:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55212#p55212</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Указатель на переменную]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55209#p55209</link>
			<description><![CDATA[<p>Немного вопрос изучил...</p><p>1) Можно перенести основной функционал приложения в VBA, и получить адрес можно используя функцию VarPtr() - тогда всё легко и красиво. А также вызвать DLL напрямую, без лишнего гемора.<br />&nbsp; &nbsp; а) Также можно создать обёртку в модуле VBA над VarPtr - но есть большое НО, переменные передаются по значению (Используя метод oExcel.Run() или oExcel.Evaluate() - где oExcel, тип Excel.Application), и возвращается адрес копии.<br />&nbsp; &nbsp; б) Хуже ещё, даже если передастся как-то по ссылке, то VarPtr считает адрес из адресного пространства Excel а не WScript - и того чего нужно по адресу мы не найдём.<br />&nbsp; &nbsp; в) Ещё хуже что передают данные с типом Variant... И даже если мы получим адрес, то это будет адрес на Variant, и такой тип передавать в DLL (уверен что она не ждёт этот тип) нельзя.</p><p>2) Используя DynWrapperX, попробовал так:<br /></p><div class="codebox"><pre><code>Dim oDWR, vTest, vTest2, vPnt
Set oDWR = CreateObject(&quot;DynamicWrapperX&quot;)

oDWR.Register &quot;msvbvm60&quot;, &quot;VarPtr&quot;, &quot;i=w&quot;, &quot;r=l&quot;
oDWR.Register &quot;kernel32&quot;, &quot;RtlMoveMemory&quot;, &quot;i=lll&quot;

&#039;Получение указателя на строку
vTest = &quot;Привет!&quot;
vPnt = oDWR.VarPtr(vTest)

&#039;Проверка, чтение из памяти строки
Call oDWR.RtlMoveMemory(vTest2, (vPnt), 16)

MsgBox vTest2</code></pre></div><p>Чтение не удаётся, неверно я типы объявляю... Ещё над этим думаю. Второй параметр надо передать по значению. Адрес на переменную получаю, но это тип Variant. Ещё встречный вопрос... Данные передаваться будут в DLL какими типами? В DWX встроен метод StrPtr - который возвращает адрес на строку. Если нужно передать число, то можно выделить буфер строковой достаточный, туда засунуть число &quot;правильно&quot; и передать правильно адрес на начало числа, тогда функция верно его считает и все будут довольны.</p><p>Если есть вариант сделать на VBA, то основной функционал я бы лучше возложил на нём.</p>]]></description>
			<author><![CDATA[null@example.com (VSVLAD)]]></author>
			<pubDate>Sat, 31 Dec 2011 15:52:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55209#p55209</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Указатель на переменную]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55208#p55208</link>
			<description><![CDATA[<p>Коллеги, спасибо за участие, но хотелось бы услышать несколько больше, чем общие фразы типа &quot;Смотри в сторону XYZ и всё получится&quot;. Конкретные предложения (с кусками кода) есть у кого-нибудь?</p>]]></description>
			<author><![CDATA[null@example.com (Vladimir)]]></author>
			<pubDate>Sat, 31 Dec 2011 14:51:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55208#p55208</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Указатель на переменную]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55203#p55203</link>
			<description><![CDATA[<p>DWX изначально разрабатывался для решения подобных задач, так что должно взлететь.</p>]]></description>
			<author><![CDATA[null@example.com (chessman)]]></author>
			<pubDate>Sat, 31 Dec 2011 11:52:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55203#p55203</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Указатель на переменную]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55200#p55200</link>
			<description><![CDATA[<p>Наличие MS Office на машине считаю допустимым условием.<br />Какио образом &quot;Можно решить проблему связкой WSH-VBA&quot;?<br />Хотелось бы увидеть хотя бы первые шаги в направлении решения задачи.</p><p>Готов рассмотреть и вариант решения с использованием DWX (опционально).</p>]]></description>
			<author><![CDATA[null@example.com (Vladimir)]]></author>
			<pubDate>Sat, 31 Dec 2011 11:30:26 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55200#p55200</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Указатель на переменную]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55199#p55199</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>В принципе MsOffice имеется на любом компьютере</p></blockquote></div><p>Лично у меня это Г. отсутствует ввиду абсолютной ненужности.<br />Это я к тому, что не стоит рассчитывать на его наличие.</p><br /><br /><br /><p>На всякий случай и здесь поздравлю всех с праздником.</p>]]></description>
			<author><![CDATA[null@example.com (Любитель)]]></author>
			<pubDate>Sat, 31 Dec 2011 11:20:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55199#p55199</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Указатель на переменную]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55188#p55188</link>
			<description><![CDATA[<p>В принципе MsOffice имеется на любом компьютере. Можно решить проблему связкой WSH-VBA.</p>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Sat, 31 Dec 2011 05:07:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55188#p55188</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Указатель на переменную]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55185#p55185</link>
			<description><![CDATA[<p><strong>chessman</strong><br />Ну так это ведь не соответствует условиям.<br /></p><div class="quotebox"><cite>Vladimir пишет:</cite><blockquote><p>Можно написать свой COM-сервер с фунцией, которая реализует это (получение указателя), но хотелось бы обойтись средствами только WSH. Или использовать какую-либо системную библиотеку, которая гарантировано присутствует в любой (стандартной) версии ОС.</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sat, 31 Dec 2011 01:10:16 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55185#p55185</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Указатель на переменную]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55184#p55184</link>
			<description><![CDATA[<p>Юрий, а почему не предлагаете DWX?</p>]]></description>
			<author><![CDATA[null@example.com (chessman)]]></author>
			<pubDate>Fri, 30 Dec 2011 16:32:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55184#p55184</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Указатель на переменную]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55182#p55182</link>
			<description><![CDATA[<p>Имя ФУНКЦИИ.<br />Впрочем, уже не надо. Я подумал, что это функция WinAPI. Уже не раз бывали вопросы про rundll, где люди не понимали особенностей вызываемых через неё функций. Думали, что любую можно вызвать. Поэтому я и поинтересовался, что за функция. Не буду больше Вас беспокоить вопросами, желаю успеха.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Fri, 30 Dec 2011 13:35:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55182#p55182</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Указатель на переменную]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55181#p55181</link>
			<description><![CDATA[<p>Имя dll-ки назвать не жалко. [accnet.dll]<br />Только что это даёт?<br />Варианты ответа на мой вопрос от этого как-то зависят?</p>]]></description>
			<author><![CDATA[null@example.com (Vladimir)]]></author>
			<pubDate>Fri, 30 Dec 2011 12:56:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55181#p55181</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Указатель на переменную]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55179#p55179</link>
			<description><![CDATA[<p>Ну, раз имя её не называете. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Fri, 30 Dec 2011 12:20:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55179#p55179</guid>
		</item>
	</channel>
</rss>
