<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBScript: помещение текстовых данных в буфер обмена через Win32 API]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=442</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=442&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBScript: помещение текстовых данных в буфер обмена через Win32 API».]]></description>
		<lastBuildDate>Tue, 01 May 2007 12:19:02 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[VBScript: помещение текстовых данных в буфер обмена через Win32 API]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=2725#p2725</link>
			<description><![CDATA[<p>Автор примера - <strong>Poltergeyst</strong>.<br />Здесь достаточно известный API-метод помещения текстовых данных в буфер обмена, адаптированный к VBScript. Работает под Win98 и WinXP. Потребуется библиотека <a href="http://www.script-coding.com/dynwrap.html">dynwrap.dll</a>.<br /></p><div class="codebox"><pre><code>&#039;Нет гарантий!Используете на свой страх и риск.
&#039;--------------------------------------------------------------
&#039;Language:    VBScript
&#039;Используется библиотека dynwrap.dll
&#039;-------------------------------------------------------------------------------
&#039;ОС Win98 4.10.2222
&#039;-------------------------------------------------------------------------------
&#039;Резервирование памяти
const GMEM_FIXED=0

&#039;Форматы буфера обмена
const CF_TEXT   =1
&#039;-------------------------------------------------------------------------------

setDataToCLP()

function setDataToCLP()
text=inputBox(&quot;Укажите строку для помещения в буфер обмена:&quot;, _
&quot;Буфер обмена.&quot;)

    if text=&quot;&quot; then WScript.Quit(1)
    text=Cstr(text)
&#039;-------------------------------------------------------------------------------
&#039;[Выделение памяти]
set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)
if not IsObject(dllWrap) then erroHnd(&quot;Невозможно создать объект DynamicWrapper&quot;)

&#039;Регистрация вызова API
dllWrap.Register _
    &quot;KERNEL32.DLL&quot;, _
    &quot;GlobalAlloc&quot;, _
    &quot;i=uu&quot;, _
    &quot;f=s&quot;, _
    &quot;r=l&quot;
hGl=dllWrap.GlobalAlloc(GMEM_FIXED,Cint(len(text)+1))
    set dllWrap=Nothing
if hGl=0 then erroHnd(&quot;Невозможно выделить память&quot;)
&#039;-------------------------------------------------------------------------------
&#039;[Блокировка памяти]
set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)
&#039;Регистрация вызова API
dllWrap.Register _
    &quot;KERNEL32.DLL&quot;, _
    &quot;GlobalLock&quot;, _
    &quot;i=l&quot;, _
    &quot;f=s&quot;, _
    &quot;r=l&quot;
&#039;Вызов API
hGl=dllWrap.GlobalLock(hGl)
    set dllWrap=Nothing
if hGl=0 then erroHnd(&quot;Невозможно резервировать память&quot;)
&#039;-------------------------------------------------------------------------------
&#039;[Копирование строки в память]
set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)
&#039;Регистрация вызова API
dllWrap.Register _
    &quot;KERNEL32.DLL&quot;, _
    &quot;lstrcpy&quot;, _
    &quot;i=hs&quot;, _
    &quot;f=s&quot;, _
    &quot;r=h&quot;
&#039;Вызов API
hGl=dllWrap.lstrcpy(hGl,CStr(text))
    set dllWrap=Nothing
if hGl=0 then erroHnd(&quot;Невозможно скопировать данные в память&quot;)
&#039;-------------------------------------------------------------------------------
&#039;&#039;[Разблокировка памяти]
&#039;set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)
&#039;&#039;Регистрация вызова API
&#039;dllWrap.Register _
&#039;    &quot;KERNEL32.DLL&quot;, _
&#039;    &quot;GlobalUnlock&quot;, _
&#039;    &quot;i=h&quot;, _
&#039;    &quot;f=s&quot;, _
&#039;    &quot;r=l&quot;
&#039;&#039;Вызов API
&#039;res=dllWrap.GlobalUnlock(hGl)
&#039;    set dllWrap=Nothing
&#039;if res&lt;&gt;0 then erroHnd(&quot;Невозможно разблокировать память&quot;)
&#039;-------------------------------------------------------------------------------
&#039;[Открытие буфера обмена]
set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)
&#039;Регистрация вызова API
dllWrap.Register _
    &quot;USER32.DLL&quot;, _
    &quot;OpenClipboard&quot;, _
    &quot;i=h&quot;, _
    &quot;f=s&quot;, _
    &quot;r=l&quot;
&#039;Вызов API
res=dllWrap.OpenClipboard(0)
    set dllWrap=Nothing
if res=0 then erroHnd(&quot;Невозможно открыть буфер обмена&quot;)
&#039;-------------------------------------------------------------------------------
&#039;[Очистка буфера обмена]
set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)
&#039;Регистрация вызова API
dllWrap.Register _
    &quot;USER32.DLL&quot;, _
    &quot;EmptyClipboard&quot;, _
    &quot;f=s&quot;, _
    &quot;r=l&quot;
&#039;Вызов API
res=dllWrap.EmptyClipboard()
    set dllWrap=Nothing
if res=0 then erroHnd(&quot;Невозможно очистить буфер обмена&quot;)
&#039;-------------------------------------------------------------------------------
&#039;[Установка содержимого буфера]
set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)
&#039;Регистрация вызова API
dllWrap.Register _
    &quot;USER32.DLL&quot;, _
    &quot;SetClipboardData&quot;, _
    &quot;i=uh&quot;, _
    &quot;f=s&quot;, _
    &quot;r=l&quot;
&#039;Вызов API
res=dllWrap.SetClipboardData(CF_TEXT,hGl)
    set dllWrap=Nothing
if res=0 then erroHnd(&quot;Невозможно поместить данные в буфер&quot;)
&#039;-------------------------------------------------------------------------------
&#039;[Закрытие буфера(освобождение)]
set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)
&#039;Регистрация вызова API
dllWrap.Register _
    &quot;USER32.DLL&quot;, _
    &quot;CloseClipboard&quot;, _
    &quot;f=s&quot;, _
    &quot;r=l&quot;
&#039;Вызов API
res=dllWrap.CloseClipboard()
    set dllWrap=Nothing
if res=0 then erroHnd(&quot;Невозмоно закрыть буфер&quot;)
&#039;-------------------------------------------------------------------------------
    MsgBox &quot;Данные помещены в буфер&quot;,vbInformation,&quot;Буфер обмена&quot;
end Function

function erroHnd(text)
    MsgBox text,vbExclamation,&quot;Произошла ошибка&quot;
    WScript.Quit(-1)
end Function</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Tue, 01 May 2007 12:19:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=2725#p2725</guid>
		</item>
	</channel>
</rss>
