<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript: вывод текста и графич. примитивов на экране через Win32 API]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=446&amp;type=atom" />
	<updated>2007-06-10T12:23:15Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=446</id>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: вывод текста и графич. примитивов на экране через Win32 API]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=3116#p3116" />
			<content type="html"><![CDATA[<p>Автор примера - <strong>Poltergeyst</strong>.<br />Скрипт демонстрирует вывод на экран окна с текстом, на этот раз с помощью CreateWindow. Работает под Win9x/Me и WinXP. Потребуются библиотеки <a href="http://www.script-coding.com/dynwrap.html">dynwrap.dll</a> и <a href="http://www.script-coding.com/AutiItX.html">AutoItX3.dll</a>.<br /></p><div class="codebox"><pre><code>//Нет гарантий!Используете на свой страх и риск!
//--------------------------------------------------------------------------------------
//&lt;script-coding&gt;
//Скрипт создает всплывающее окно и выводит в него произвольные
//текстовые данные.Окно создается с помощью CreateWindowExA.
//--------------------------------------------------------------------------------------
//Lang.:JScript
//Используется библиотека dynwrap.dll
//Используется библиотека AutoItX3.dll,v3.2.0.1
//ОС Win9X/Me
//--------------------------------------------------------------------------------------
//&lt;/script-coding&gt;
var txtData=new Array(    &#039; Этот скрипт создает&#039;,
            &#039; всплывающее окно&#039;,
            &#039; и выводит произвольные&#039;,
            &#039; текстовые&#039;,
            &#039; данные&#039;,
            &#039;-----------------------------------------------------&#039;,
            &#039; Чтобы это окно исчезло наведите на него курсор мыши&#039;,
            &#039;-----------------------------------------------------&#039;)
//--------------------------------------------------------------------------------------
simulatePopUp(txtData)

function simulatePopUp(txtData)
{
    var WS_BORDER            =eval(&#039;0x00800000&#039;)
    var WS_EX_TOOLWINDOW        =eval(&#039;0x00000080&#039;)
    var WS_EX_OVERLAPPEDWINDOW    =eval(&#039;0x00000300&#039;)
    var WS_EX_TOPMOST        =8
    var SW_SHOWNORMAL             =1
    var TA_CENTER                   =6

    var ghost=new ActiveXObject(&quot;AutoItX3.Control&quot;)
//--------------------------------------------------------------------------------------
    dllWrap=new ActiveXObject(&quot;DynamicWrapper&quot;)
    wWidth=500
    wHeight=txtData.length*25

    ghost.mouseMove(wWidth+100,20)

    dllWrap.Register(&quot;USER32.DLL&quot;,&quot;CreateWindowExA&quot;,&quot;i=lsslllllllll&quot;,&quot;f=s&quot;,&quot;r=h&quot;)
    hwnd=dllWrap.CreateWindowExA(    WS_EX_TOOLWINDOW|WS_EX_TOPMOST,
                    &quot;msctls_progress32&quot;,
                    &quot;Пример всплывающего окна&quot;,
                    WS_BORDER,
                    0,0,wWidth,wHeight,
                    0,0,0,0)
    dllWrap=0
//--------------------------------------------------------------------------------------
    dllWrap=new ActiveXObject(&quot;DynamicWrapper&quot;)
    dllWrap.Register(&quot;USER32.DLL&quot;,&quot;GetWindowDC&quot;,&quot;i=h&quot;,&quot;f=s&quot;,&quot;r=h&quot;)
    hDC=dllWrap.GetWindowDC(hwnd)
    dllWrap=0
//--------------------------------------------------------------------------------------
    dllWrap=new ActiveXObject(&quot;DynamicWrapper&quot;)
    dllWrap.Register(&quot;USER32.DLL&quot;,&quot;ShowWindow&quot;,&quot;i=ll&quot;,&quot;f=s&quot;,&quot;r=l&quot;)
    dllWrap.ShowWindow(hwnd,SW_SHOWNORMAL)
    dllWrap=0
//--------------------------------------------------------------------------------------
    bkColor=ghost.pixelGetColor(wWidth/2,wHeight/2)

    dllWrap=new ActiveXObject(&quot;DynamicWrapper&quot;)
    dllWrap.Register(&quot;GDI32.DLL&quot;,&quot;SetBkColor&quot;,&quot;i=hu&quot;,&quot;f=s&quot;,&quot;r=h&quot;)
    dllWrap.SetBkColor(hDC,bkColor)
    dllWrap=0
//--------------------------------------------------------------------------------------
    color=eval(&#039;0xff0000&#039;)
    dllWrap=new ActiveXObject(&quot;DynamicWrapper&quot;)
    dllWrap.Register(&quot;GDI32.DLL&quot;,&quot;SetTextColor&quot;,&quot;i=hu&quot;,&quot;f=s&quot;,&quot;r=h&quot;)
    dllWrap.SetTextColor(hDC,color)
    dllWrap=0
//--------------------------------------------------------------------------------------
    dllWrap=new ActiveXObject(&quot;DynamicWrapper&quot;)
    dllWrap.Register(&quot;GDI32.DLL&quot;,&quot;SetTextAlign&quot;,&quot;i=ll&quot;,&quot;f=s&quot;,&quot;r=l&quot;)
    dllWrap.SetTextAlign(hDC,TA_CENTER)
    dllWrap=0
//--------------------------------------------------------------------------------------
    dllWrap=new ActiveXObject(&quot;DynamicWrapper&quot;)
    dllWrap.Register(&quot;GDI32.DLL&quot;,&quot;SetTextCharacterExtra&quot;,&quot;i=ll&quot;,&quot;f=s&quot;,&quot;r=l&quot;)
    dllWrap.SetTextCharacterExtra(hDC,1)
    dllWrap=0
//--------------------------------------------------------------------------------------

    for (i=0;i&lt;txtData.length;i++)
    {
        dllWrap=new ActiveXObject(&quot;DynamicWrapper&quot;)
        dllWrap.Register(&quot;GDI32.DLL&quot;,&quot;TextOut&quot;,&quot;i=luusu&quot;,&quot;f=s&quot;,&quot;r=l&quot;)
        dllWrap.TextOut(hDC,wWidth/2,30+i*20,txtData[i],txtData[i].length)
        dllWrap=0
    }
//--------------------------------------------------------------------------------------
    //Стандартный цикл следящий за смещением мыши
    while (1)
    {
    //Здесь должен находится вызов GetMessage,но отсутствует
    //в связи с невозможностью работы с dll-структурами.
    //Поэтому созданное окно не перехватывает сообщений.

        posX=ghost.MouseGetPosX()
        posY=ghost.MouseGetPosY()
        if (posX&lt;wWidth &amp;&amp; posY&lt;wHeight)
        {
            ghost.sleep(200)
            destroyWindow(hwnd)
            ghost.sleep(200)
            
        }

    }
}
//--------------------------------------------------------------------------------------
function destroyWindow(hwnd)
{
    dllWrap=new ActiveXObject(&quot;DynamicWrapper&quot;)
    dllWrap.Register(&quot;USER32.DLL&quot;,&quot;DestroyWindow&quot;,&quot;i=l&quot;,&quot;f=s&quot;,&quot;r=l&quot;)
    res=dllWrap.DestroyWindow(hwnd)
    dllWrap=0
    WScript.Quit(0)


}
//--------------------------------------------------------------------------------------
//Дополнение:
//--------------------------------------------------------------------------------------
//Некоторые классы из COMCTL32.h
    //ToolbarWindow32
    //tooltips_class32
    //msctls_statusbar32
    //msctls_trackbar32
    //msctls_updown32
    //msctls_progress32
    //SysAnimate32
//--------------------------------------------------------------------------------------
//poltergeyst</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2007-06-10T12:23:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=3116#p3116</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: вывод текста и графич. примитивов на экране через Win32 API]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=2769#p2769" />
			<content type="html"><![CDATA[<p>Автор примера - <strong>Poltergeyst</strong>.<br />Скрипт симулирует всплывающее окно с текстом в действительном контексте экрана, развитие скрипта из поста #1. Работает под Win98 и WinXP. Потребуются библиотеки <a href="http://www.script-coding.com/dynwrap.html">dynwrap.dll</a> и <a href="http://www.script-coding.com/AutiItX.html">AutoItX3.dll</a>.<br />Функция <strong>setTextToScreen(textData)</strong> получает произвольный массив строк и выводит его на экран, подгоняя высоту области вывода сообразно объёму текста.<br /></p><div class="codebox"><pre><code>&#039;Нет гарантий!Используете на свой страх и риск.
&#039;-----------------------------------------------------------------
&#039;Пример организации всплывающего окна содержащего текстовые
&#039;данные в действительный контекст экрана.Чтобы погасить псевдоокно
&#039;сдвиньте курсор мыши на достаточное расстояние
&#039;-----------------------------------------------------------------
&#039;Language:    VBScript
&#039;Используется библиотека dynwrap.dll
&#039;Используется библиотека AutoItX3.dll,v3.2.0.1
&#039;-----------------------------------------------------------------
&#039;ОС Win98 4.10.2222
&#039;-----------------------------------------------------------------
&#039;[Создание основных агрегатных объектов и объявление переменных]
    on Error resume Next

    set fso    =CreateObject(&quot;Scripting.FileSystemObject&quot;)
        if not IsObject(fso) then comErro(&quot;Scripting.FileSystemObject&quot;)

    set Ghost    =CreateObject(&quot;AutoItX3.Control&quot;)
        if not IsObject(Ghost) then comErro(&quot;AutoItX3.Control&quot;)

    set nWork    =CreateObject(&quot;WScript.Network&quot;)
        if not IsObject(nWork) then comErro(&quot;WScript.Network&quot;)

    Ghost.WinMinimizeAll 
    

    &#039;Вызовы функций

    &#039;Получение данных
    &#039;    textData=array(&quot;&quot;)
    &#039;    getSystemInformation()
    &#039;    setTextToScreen(textData)

    &#039;Вывод произвольной информации.Каждый элемент массива соответствует строке
        textData=array(    &quot;Этот пример выводит текстовые данные в действительный контекст экрана.&quot;, _
                &quot;Высота области экрана для вывода подгоняется под размер текста.&quot;)
        setTextToScreen(textData)

&#039;-----------------------------------------------------------------
&#039;Некоторые данные о вашем компьютере
&#039;-----------------------------------------------------------------
function getSystemInformation()
&#039;-----------------------------------------------------------------
&#039;[Сбор некоторых данных]
&#039;-----------------------------------------------------------------    

    mBound=fso.drives.count
    redim textData(mBound)
i=0
for each drive in fso.drives
    on Error resume Next    
    data=&quot;Диск: &quot; &amp; drive.Path &amp;     &quot; Свободно: &quot;     &amp; drive.FreeSpace/1024 &amp; &quot; kB&quot;     &amp; _
                    &quot;;Всего: &quot;     &amp; drive.TotalSize/1024 &amp; &quot; kB&quot;     &amp; _
                    &quot;;Файловая система: &quot; &amp; drive.FileSystem     &amp; _
                    &quot;;SN: &quot;     &amp; drive.SerialNumber
         textData(i)= CStr(data)
    i=i+1
next
    Ghost.sleep(100)
&#039;-----------------------------------------------------------------
data=    &quot;Компьютер: &quot; &amp; nWork.ComputerName &amp; _
    &quot;;Пользователь: &quot;  &amp; nWork.UserName

     textData(i)= CStr(data)
&#039;-----------------------------------------------------------------
    Ghost.sleep(100)
end Function

&#039;-----------------------------------------------------------------
&#039;Симуляция всплывающего окна содержащего текст
&#039;-----------------------------------------------------------------
function setTextToScreen(data)

&#039;data-одномерный текстовый массив

&#039;-----------------------------------------------------------------
&#039;[Получение дескриптора общего контекста экрана]
set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)

&#039;Регистрация вызова API
dllWrap.Register _
    &quot;USER32.DLL&quot;, _
    &quot;GetWindowDC&quot;, _
    &quot;i=h&quot;, _
    &quot;f=s&quot;, _
    &quot;r=h&quot;

&#039;Вызов API
hDC=dllWrap.GetWindowDC(Null)

set dllWrap=Nothing
    Ghost.sleep(100)
&#039;-----------------------------------------------------------------
&#039;[Вывод прямоугольника]

param=25    &#039;Количество пикселей на высоту единичной строки.
        &#039;Измените этот параметр если что-то не так.

set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)

&#039;Регистрация вызова API
dllWrap.Register _
    &quot;GDI32.DLL&quot;, _
    &quot;RoundRect&quot;, _
    &quot;i=luuuuuu&quot;, _
    &quot;f=s&quot;, _
    &quot;r=l&quot;

&#039;Вызов API
res=dllWrap.RoundRect(    hDC, _
    0, _    
    5, _
    800, _    
    param*UBound(data)+100, _
    40, _
    40)

set dllWrap=Nothing
    Ghost.sleep(100)
&#039;-----------------------------------------------------------------
&#039;[Установка цвета шрифта]
    red    =255*1
    green    =65280*0
    blue    =16711680*0
    color=Round(red+green+blue,0)


set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)

&#039;Регистрация вызова API
    dllWrap.Register _
    &quot;GDI32.DLL&quot;, _
    &quot;SetTextColor&quot;, _
    &quot;i=hu&quot;, _
    &quot;f=s&quot;, _
    &quot;r=h&quot;

&#039;Вызов API
hBrush=dllWrap.SetTextColor(hDC,color)

set dllWrap=Nothing
    Ghost.sleep(100)
&#039;-----------------------------------------------------------------
&#039;[Вывод текста в графическом представлении]

for i=0 to Ubound(data)
    on Error resume Next    
    set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)
    
    &#039;Регистрация вызова API
    dllWrap.Register _
        &quot;GDI32.DLL&quot;, _
        &quot;TextOut&quot;, _
        &quot;i=luusu&quot;, _
        &quot;f=s&quot;, _
        &quot;r=l&quot;    

    &#039;Вызов API
    res=dllWrap.TextOut(hDC, _
        20, _
        20+param*i, _
        CStr(data(i)), _
        CInt(len(data(i))))    

    set dllWrap=Nothing        
next
    Ghost.sleep(100)    
&#039;-----------------------------------------------------------------
caution=&quot;+++Чтобы убрать сообщение сдвиньте курсор мыши или обновите экран вручную+++&quot;

set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)
    
    &#039;Регистрация вызова API
    dllWrap.Register _
        &quot;GDI32.DLL&quot;, _
        &quot;TextOut&quot;, _
        &quot;i=luusu&quot;, _
        &quot;f=s&quot;, _
        &quot;r=l&quot;    

    &#039;Вызов API
    res=dllWrap.TextOut(hDC, _
        20, _
        20+param*i, _
        CStr(caution), _
        CInt(len(caution)))

    set dllWrap=Nothing    

    Ghost.sleep(100)    
&#039;-----------------------------------------------------------------
&#039;[Освобождение контекста устройства]

set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)

&#039;Регистрация вызова API
dllWrap.Register _
    &quot;USER32.DLL&quot;, _
    &quot;ReleaseDC&quot;, _
    &quot;i=hh&quot;, _
    &quot;f=s&quot;, _
    &quot;r=l&quot;

&#039;Вызов API
res=dllWrap.ReleaseDC(0,hDC)

set dllWrap=Nothing
    Ghost.sleep(100)
&#039;-----------------------------------------------------------------
&#039;[Обновление экрана при достаточном сдвиге курсора мыши]
posX_0=Ghost.MouseGetPosX
posY_0=Ghost.MouseGetPosY
    while 1
    posX=Ghost.MouseGetPosX
    posY=Ghost.MouseGetPosY
        if abs(posX-posX_0)&gt;10 or abs(posY-posY_0)&gt;10 then 
            Ghost.sleep(100)
                Ghost.send(&quot;{F5}&quot;)
            Ghost.sleep(100)
            WScript.Quit(0)
        end If
    wend

End function

&#039;-----------------------------------------------------------------
&#039;Обработчик ошибок COM
&#039;-----------------------------------------------------------------
function comErro(objName)
msgBox         &quot;Невозможно создание объекта &quot; &amp; objName &amp; vbCRLF &amp; _
        &quot;Установите соответствующую библиотеку&quot;  &amp; vbCRLF &amp; _
        &quot;и зарегистрируйте её в реестре.&quot;, _
        vbOKOnly + vbExclamation, _
           &quot;Всплывающий комментарий&quot;
WScript.Quit(-1)
end Function</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2007-05-03T17:19:49Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=2769#p2769</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: вывод текста и графич. примитивов на экране через Win32 API]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=2756#p2756" />
			<content type="html"><![CDATA[<p>Автор примера - <strong>Poltergeyst</strong>.<br />Скрипт демонстрирует вывод графических примитивов и определение разрешения экрана через Win32 API. Работает под Win98 и WinXP. Потребуются библиотеки <a href="http://www.script-coding.com/dynwrap.html">dynwrap.dll</a> и <a href="http://www.script-coding.com/AutiItX.html">AutoItX3.dll</a>.<br /></p><div class="codebox"><pre><code>&#039;Нет гарантий.Используете на свой страх и риск.
&#039;-----------------------------------------------------------------
&#039;Вывод разноцветных графических примитивов 
&#039;в случайном порядке расположения с помощью WIN32 API.
&#039;-----------------------------------------------------------------
&#039;Language:    VBScript
&#039;Используется библиотека dynwrap.dll
&#039;Используется библиотека AutoItX3.dll,v3.2.0.1
&#039;-----------------------------------------------------------------
&#039;ОС Win98 4.10.2222
&#039;-----------------------------------------------------------------
function createShadow(maxCount)

on Error resume Next    
set Ghost=CreateObject(&quot;AutoItX3.Control&quot;)
if not IsObject(Ghost) then comErro(&quot;AutoItX3.Control&quot;)
Ghost.WinMinimizeAll 

&#039;-----------------------------------------------------------------
&#039;[Определение разрешения экрана]
set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)

if not IsObject(dllWrap) then comErro(&quot;DynamicWrapper&quot;)

const SM_CXSCREEN=0
const SM_CYSCREEN=1

&#039;Регистрация вызова API
dllWrap.Register _
    &quot;USER32.DLL&quot;, _
    &quot;GetSystemMetrics&quot;, _
    &quot;i=u&quot;, _
    &quot;f=s&quot;, _
    &quot;r=l&quot;


&#039;Вызов API
xM=dllWrap.GetSystemMetrics(SM_CXSCREEN)
yM=dllWrap.GetSystemMetrics(SM_CYSCREEN)

set dllWrap=Nothing
&#039;-----------------------------------------------------------------
answ=msgbox( _
&quot;Разрешение экрана: [&quot; &amp; xM &amp; &quot;]x[&quot; &amp; yM &amp; &quot;]&quot;         &amp; vbCRLF &amp; _
&quot;Этот скрипт выводит на экран графические примитивы.&quot;     &amp; vbCRLF &amp; _
&quot;Уверены что хотите продолжить?&quot;, _
vbInformation+vbYesNo, _
&quot;Рисование примитивов&quot;)

if answ=vbNo then WScript.Quit(0) 
&#039;-----------------------------------------------------------------
&#039;[Получение дескриптора общего контекста экрана]
set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)

&#039;Регистрация вызова API
dllWrap.Register _
    &quot;USER32.DLL&quot;, _
    &quot;GetWindowDC&quot;, _
    &quot;i=h&quot;, _
    &quot;f=s&quot;, _
    &quot;r=h&quot;

&#039;Вызов API
hDC=dllWrap.GetWindowDC(Null)

set dllWrap=Nothing
&#039;-----------------------------------------------------------------
&#039;[Запуск цикла генерации примитивов]
&#039;-----------------------------------------------------------------
i=0
while i&lt;maxCount
    &#039;[Смещение и цвет]
    shiftX=xM*Rnd()
    shiftY=(yM-150)*Rnd()

    blue    =255*Rnd()
    green    =65280*Rnd()
    red    =16711680*Rnd()

    color=Round(red+green+blue,0)
&#039;-----------------------------------------------------------------
&#039;[Создание заливки]

    set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)

    &#039;Регистрация вызова API
    dllWrap.Register _
        &quot;GDI32.DLL&quot;, _
        &quot;CreateSolidBrush&quot;, _
        &quot;i=u&quot;, _
        &quot;f=s&quot;, _
        &quot;r=h&quot;

    &#039;Вызов API
    hBrush=dllWrap.CreateSolidBrush(color)

    set dllWrap=Nothing
&#039;-----------------------------------------------------------------
&#039;[Выбор заливки в контекст устройства]
    set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)

    &#039;Регистрация вызова API
    dllWrap.Register _
        &quot;GDI32.DLL&quot;, _
        &quot;SelectObject&quot;, _
        &quot;i=ll&quot;, _
        &quot;f=s&quot;, _
        &quot;r=l&quot;

    &#039;Вызов API
    res=dllWrap.SelectObject(hDC,hBrush)

    set dllWrap=Nothing
&#039;-----------------------------------------------------------------
&#039;[Вывод примитива]

    set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)

    &#039;Регистрация вызова API
    dllWrap.Register _
        &quot;GDI32.DLL&quot;, _
        &quot;Rectangle&quot;, _
        &quot;i=luuuu&quot;, _
        &quot;f=s&quot;, _
        &quot;r=l&quot;

    &#039;Вызов API
    res=dllWrap.Rectangle(    hDC, _
            CInt(shiftX), _
            CInt(shiftY), _
            CInt(shiftX)+100, _
            CInt(shiftY)+100)

    set dllWrap=Nothing
&#039;-----------------------------------------------------------------
&#039;[Удаление заливки]

    set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)

    &#039;Регистрация вызова API
    dllWrap.Register _
        &quot;GDI32.DLL&quot;, _
        &quot;DeleteObject&quot;, _
        &quot;i=h&quot;, _
        &quot;f=s&quot;, _
        &quot;r=l&quot;

    &#039;Вызов API
    res=dllWrap.DeleteObject(hBrush)

    set dllWrap=Nothing
i=i+1
wend

&#039;-----------------------------------------------------------------
&#039;[Освобождение контекста устройства]

set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)

&#039;Регистрация вызова API
dllWrap.Register _
    &quot;USER32.DLL&quot;, _
    &quot;ReleaseDC&quot;, _
    &quot;i=hh&quot;, _
    &quot;f=s&quot;, _
    &quot;r=l&quot;


&#039;Вызов API
res=dllWrap.ReleaseDC(0,hDC)

set dllWrap=Nothing

&#039;-----------------------------------------------------------------
&#039;[Обновление экрана через user.dll]
    &#039;Ghost.Run &quot;RUNDLL32.EXE user,repaintscreen&quot;
    &#039;Ghost.sleep(100)
&#039;-----------------------------------------------------------------
MsgBox _
    &quot;Выполнение завершено.&quot;, _
    vbInformation, _
    &quot;Рисование примитивов&quot;
End function

&#039;-----------------------------------------------------------------
&#039;Обработчик ошибок COM
&#039;-----------------------------------------------------------------
function comErro(objName)
msgBox         &quot;Невозможно создание объекта &quot; &amp; objName &amp; vbCRLF &amp; _
        &quot;Установите соответствующую библиотеку&quot;  &amp; vbCRLF &amp; _
        &quot;и зарегистрируйте её в реестре.&quot;, _
        vbOKOnly + vbExclamation, _
           &quot;Рисование примитивов&quot;
WScript.Quit(-1)
end Function

createShadow(100) &#039;Вызов 100 разноцветных примитивов</code></pre></div><p>Примечание 1. Под WinXP вот эта строка не работает (в скрипте выше она закомментирована):<br /></p><div class="codebox"><pre><code>Ghost.Run &quot;RUNDLL32.EXE user,repaintscreen&quot;</code></pre></div><p>Примечание 2. Можно не использовать библиотеку AutoItX3.dll, если строки:<br /></p><div class="codebox"><pre><code>set Ghost=CreateObject(&quot;AutoItX3.Control&quot;)
if not IsObject(Ghost) then comErro(&quot;AutoItX3.Control&quot;)
Ghost.WinMinimizeAll</code></pre></div><p>заменить на строки:<br /></p><div class="codebox"><pre><code>Set objShellApp = CreateObject(&quot;Shell.Application&quot;)
objShellApp.MinimizeAll</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2007-05-02T19:05:49Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=2756#p2756</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBScript: вывод текста и графич. примитивов на экране через Win32 API]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=2755#p2755" />
			<content type="html"><![CDATA[<p>Автор примера - <strong>Poltergeyst</strong>.<br />Скрипт симулирует всплывающее окно с текстом в действительном контексте экрана. Работает под Win98 и WinXP. Потребуется библиотека <a href="http://www.script-coding.com/dynwrap.html">dynwrap.dll</a>.<br /></p><div class="codebox"><pre><code>&#039;Нет гарантий!Используете на свой страх и риск.
&#039;-----------------------------------------------------------------
&#039;Пример симуляции всплывающего окна содержащего текстовые
&#039;данные в действительный контекст экрана.
&#039;-----------------------------------------------------------------
&#039;Language:    VBScript
&#039;Используется библиотека dynwrap.dll
&#039;-----------------------------------------------------------------
&#039;ОС Win98 4.10.2222
&#039;-----------------------------------------------------------------
&#039;[Создание основных объектов и объявление переменных]
on Error resume Next    

    set fso        =CreateObject(&quot;Scripting.FileSystemObject&quot;)
        if not IsObject(fso) then comErro(&quot;Scripting.FileSystemObject&quot;)

    set nWork    =CreateObject(&quot;WScript.Network&quot;)
        if not IsObject(nWork) then comErro(&quot;WScript.Network&quot;)

    dim hDC

    getSystemInformation()

&#039;-----------------------------------------------------------------
&#039;Некоторые данные о вашем компьютере
&#039;-----------------------------------------------------------------
function getSystemInformation()
&#039;-----------------------------------------------------------------
&#039;[Получение дескриптора общего контекста экрана]
set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)

&#039;Регистрация вызова API
dllWrap.Register _
    &quot;USER32.DLL&quot;, _
    &quot;GetWindowDC&quot;, _
    &quot;i=h&quot;, _
    &quot;f=s&quot;, _
    &quot;r=h&quot;

&#039;Вызов API
hDC=dllWrap.GetWindowDC(Null)

set dllWrap=Nothing
&#039;-----------------------------------------------------------------
&#039;&#039;[Создание пера]
&#039;
&#039;red    =255*1
&#039;green    =65280*0
&#039;blue    =16711680*0
&#039;
&#039;    color=Round(red+green+blue,0)
&#039;
&#039;set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)
&#039;
&#039;&#039;Регистрация вызова API
&#039;dllWrap.Register _
&#039;    &quot;GDI32.DLL&quot;, _
&#039;    &quot;CreatePen&quot;, _
&#039;    &quot;i=uuu&quot;, _
&#039;    &quot;f=s&quot;, _
&#039;    &quot;r=l&quot;
&#039;
&#039;&#039;Вызов API
&#039;hPen=dllWrap.CreatePen(0, _
&#039;        5, _
&#039;        Cint(color))
&#039;set dllWrap=Nothing
&#039;&#039;-----------------------------------------------------------------
&#039;&#039;[Выбор заливки в контекст устройства]
&#039;
&#039;set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)
&#039;
&#039;&#039;Регистрация вызова API
&#039;dllWrap.Register _
&#039;    &quot;GDI32.DLL&quot;, _
&#039;    &quot;SelectObject&quot;, _
&#039;    &quot;i=ll&quot;, _
&#039;    &quot;f=s&quot;, _
&#039;    &quot;r=l&quot;
&#039;
&#039;&#039;Вызов API
&#039;res=dllWrap.SelectObject(hDC,hPen)
&#039;
&#039;set dllWrap=Nothing
&#039;-----------------------------------------------------------------
&#039;[Вывод прямоугольника]

set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)

&#039;Регистрация вызова API
dllWrap.Register _
    &quot;GDI32.DLL&quot;, _
    &quot;Rectangle&quot;, _
    &quot;i=luuuu&quot;, _
    &quot;f=s&quot;, _
    &quot;r=l&quot;

&#039;Вызов API
res=dllWrap.Rectangle(    hDC, _
        0, _
        5, _
        750, _
        100)

set dllWrap=Nothing
&#039;-----------------------------------------------------------------
&#039;[Сбор некоторых данных]
&#039;-----------------------------------------------------------------    
i=1
for each drive in fso.drives
on Error resume Next    
data=&quot;Диск: &quot; &amp; drive.Path &amp; &quot; Свободно: &quot;&amp; drive.FreeSpace/1024 &amp; &quot; kB&quot; &amp; _
            &quot;;Всего: &quot;     &amp; drive.TotalSize/1024 &amp; &quot; kB&quot;     &amp; _
            &quot;;Файловая система: &quot; &amp; drive.FileSystem     &amp; _
            &quot;;Номер: &quot;     &amp; drive.SerialNumber

     setGDIData data,i,len(data)
i=i+1
next
&#039;-----------------------------------------------------------------
data=    &quot;Компьютер: &quot; &amp; nWork.ComputerName &amp; _
    &quot;;Пользователь: &quot;  &amp; nWork.UserName
     
        setGDIData data,i,len(data)
&#039;-----------------------------------------------------------------
&#039;[Освобождение контекста устройства]

set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)

&#039;Регистрация вызова API
dllWrap.Register _
    &quot;USER32.DLL&quot;, _
    &quot;ReleaseDC&quot;, _
    &quot;i=hh&quot;, _
    &quot;f=s&quot;, _
    &quot;r=l&quot;

&#039;Вызов API
res=dllWrap.ReleaseDC(0,hDC)

set dllWrap=Nothing
end Function


&#039;-----------------------------------------------------------------
&#039;Симуляция всплывающего окна
&#039;-----------------------------------------------------------------
function setGDIData(data,shiftY,dLen)
&#039;-----------------------------------------------------------------
&#039;[Установка цвета шрифта]
    red    =255*0
    green    =65280*0
    blue    =16711680*1
    color=Round(red+green+blue,0)
    &#039;Синий

set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)

&#039;Регистрация вызова API
    dllWrap.Register _
    &quot;GDI32.DLL&quot;, _
    &quot;SetTextColor&quot;, _
    &quot;i=hu&quot;, _
    &quot;f=s&quot;, _
    &quot;r=h&quot;

&#039;Вызов API
hBrush=dllWrap.SetTextColor(hDC,color)

set dllWrap=Nothing
&#039;-----------------------------------------------------------------
&#039;[Вывод текста в графическом представлении]

set dllWrap=CreateObject(&quot;DynamicWrapper&quot;)

&#039;Регистрация вызова API
dllWrap.Register _
    &quot;GDI32.DLL&quot;, _
    &quot;TextOut&quot;, _
    &quot;i=luusu&quot;, _
    &quot;f=s&quot;, _
    &quot;r=l&quot;

&#039;Вызов API
res=dllWrap.TextOut(hDC, _
        10, _
        10+15*shiftY, _
        CStr(data), _
        CInt(dLen))    
set dllWrap=Nothing        

End function

&#039;-----------------------------------------------------------------
&#039;Обработчик ошибок COM
&#039;-----------------------------------------------------------------
function comErro(objName)
msgBox        &quot;Невозможно создание объекта &quot; &amp; objName &amp; vbCRLF &amp; _
        &quot;Установите соответствующую библиотеку&quot;  &amp; vbCRLF &amp; _
        &quot;и зарегистрируйте её в реестре.&quot;, _
        vbOKOnly + vbExclamation, _
           &quot;Всплывающий комментарий&quot;
WScript.Quit(-1)
end Function</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2007-05-02T18:49:30Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=2755#p2755</id>
		</entry>
</feed>
