Что нового

Как передать хендл в качестве аргумента?

vovsla

Осваивающий
Сообщения
607
Репутация
36
Пытаюсь сделать общий доступ для нескольких программ к базе данных SQLite в виртуальной памяти.
Для этого создаю базу в одной программе, а хенл базы передаю другой программе в качестве аргумента.
Но вторая программа не может работать с хендлом как со строкой, а при переводе из строки в хендл, весь хендл забивается нулями.
Как можно передать хендл базы данных другой программе?

программа 1
Код:
#include <SQLite.au3>
#include <SQLite.dll.au3>

_SQLite_Startup()
$DBHandle = _SQLite_Open()
_SQLite_Exec($DBHandle, "CREATE TABLE IF NOT EXISTS TestTable (TestCol VARCHAR);")

_SQLite_Exec($DBHandle, "INSERT INTO TestTable VALUES ('TestVal1');")


Dim $Result, $Rows, $Columns
_SQLite_GetTable2d($DBHandle, "SELECT * FROM TestTable ;", $Result, $Rows, $Columns)
_ArrayDisplay($Result)


MsgBox(0,'HDB', $DBHandle)
MsgBox(0,'HDBs', String($DBHandle))


Run('1HWND2.exe '&$DBHandle)
;~ _ArrayDisplay($Result)

_SQLite_Close($DBHandle)
_SQLite_Shutdown()


программа 2
Код:
#include <SQLite.au3>
#include <SQLite.dll.au3>


MsgBox(0,'str', $CMDLine[1])


$HDB = HWnd($CMDLine[1])
MsgBox(0,'hd', $HDB)


_SQLite_Startup()


;~ $DBHandle = _SQLite_Open()
;~ _SQLite_Exec($DBHandle, "CREATE TABLE IF NOT EXISTS TestTable (TestCol VARCHAR);")

;~ _SQLite_Exec($CMDLine[1], "INSERT INTO TestTable VALUES ('TestVal1');")


Dim $Result, $Rows, $Columns
_SQLite_GetTable2d($CMDLine[1], "SELECT * FROM TestTable ;", $Result, $Rows, $Columns)
_ArrayDisplay($Result, '2')





;~ _SQLite_Close($DBHandle)
_SQLite_Shutdown()
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Вторая программа не сможет работать с базой, открытой в первой программе.
к тому же
функция HWnd
Преобразовывает выражение в дескриптор HWND, если окно с таким дескриптором существует.

а тут дескриптор базы данных
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
Почему вторая программа не сможет работать с базой, открытой в первой программе?
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
С базой может, с хендлом созданным в другой программе не может !
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
Печально. Спасибо за информацию.
 
Верх