Операционная система: Win7_32-разрядная версия. Проект на VB.Net. Visual Studio 32-разрядная. Вопрос_1: в Excel пример для какой разрядности? Вопрос_2: какой тип функции установить в моем случае?
Ошибка: A call to PInvoke function 'ПроектAPI.Form1::TRANS2QUIK_CONNECTED' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.
DLLImport не пойдет, потому-что Trans2QuikAPI.dll у меня в Проекте находится. А TRANS2QUIK_IS_QUIK_CONNECTED - это на автомате, т.к. стал пробовать другие функции. Ошибка та же.
Добрый день! Тестирую Trans2QuikAPI в простом проекте с двумя кнопками: Connect и Disconnect. Проект на VB.Net. За основу взял код VBA из примера в Excel. С потоками проблема. Поэтому следующую ошибку не могу побороть, подскажите, как решить проблему.
Ошибка: A call to PInvoke function 'ПроектAPI.Form1::TRANS2QUIK_IS_QUIK_CONNECTED' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.
Код
Код:[CODE]Public Class Form1
Public Const TRANS2QUIK_SUCCESS = 0
Public Const TRANS2QUIK_FAILED = 1
Public Const TRANS2QUIK_QUIK_TERMINAL_NOT_FOUND = 2
Public Const TRANS2QUIK_DLL_VERSION_NOT_SUPPORTED = 3
Public Const TRANS2QUIK_ALREADY_CONNECTED_TO_QUIK = 4
Public Const TRANS2QUIK_WRONG_SYNTAX = 5
Public Const TRANS2QUIK_QUIK_NOT_CONNECTED = 6
Public Const TRANS2QUIK_DLL_NOT_CONNECTED = 7
Public Const TRANS2QUIK_QUIK_CONNECTED = 8
Public Const TRANS2QUIK_QUIK_DISCONNECTED = 9
Public Const TRANS2QUIK_DLL_CONNECTED = 10
Public Const TRANS2QUIK_DLL_DISCONNECTED = 11
Public Const TRANS2QUIK_MEMORY_ALLOCATION_ERROR = 12
Public Const TRANS2QUIK_WRONG_CONNECTION_HANDLE = 13
Public Const TRANS2QUIK_WRONG_INPUT_PARAMS = 14
Public TransStr As String
Dim PathToInfo As String
Dim FunctionResult As Long
Dim FunctionResultString As String
Dim pnExtendedErrorCode As Long
Dim lpstrErrorMessage As String = Mid(lpstrErrorMessage, 250)
Public Const dwErrorMessageSize = 250
Dim nReturnCode As Long
Dim dwTransID As Long
Dim dOrderNum As Double
Dim lpstrResultMessage As String = Mid(lpstrResultMessage, 250)
Const dwResultMessageSize = 250
Dim curRow As Long
Dim g_nOrdersCount As Long
Dim g_nTradesCount As Long
Public Declare Function TRANS2QUIK_CONNECT Lib "D:\...Проект\Resources\TRANS2QUIK.dll" _
Alias "_TRANS2QUIK_CONNECT@16" _
(ByVal lpstConnectionParamsString As String, _
ByRef pnExtendedErrorCode As Long, _
ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long
Public Declare Function TRANS2QUIK_DISCONNECT Lib "D:\...Проект\Resources\TRANS2QUIK.dll" _
Alias "_TRANS2QUIK_DISCONNECT@12" _
(ByRef pnExtendedErrorCode As Long, _
ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long
Public Function Trans2QuikResultToStr(ByVal Num As Long) As String
If Num = 0 Then Trans2QuikResultToStr = "TRANS2QUIK_SUCCESS"
If Num = 1 Then Trans2QuikResultToStr = "TRANS2QUIK_FAILED"
If Num = 2 Then Trans2QuikResultToStr = "TRANS2QUIK_QUIK_TERMINAL_NOT_FOUND"
If Num = 3 Then Trans2QuikResultToStr = "TRANS2QUIK_DLL_VERSION_NOT_SUPPORTED"
If Num = 4 Then Trans2QuikResultToStr = "TRANS2QUIK_ALREADY_CONNECTED_TO_QUIK"
If Num = 5 Then Trans2QuikResultToStr = "TRANS2QUIK_WRONG_SYNTAX"
If Num = 6 Then Trans2QuikResultToStr = "TRANS2QUIK_QUIK_NOT_CONNECTED"
If Num = 7 Then Trans2QuikResultToStr = "TRANS2QUIK_DLL_NOT_CONNECTED"
If Num = 8 Then Trans2QuikResultToStr = "TRANS2QUIK_QUIK_CONNECTED"
If Num = 9 Then Trans2QuikResultToStr = "TRANS2QUIK_QUIK_DISCONNECTED"
If Num = 10 Then Trans2QuikResultToStr = "TRANS2QUIK_DLL_CONNECTED"
If Num = 11 Then Trans2QuikResultToStr = "TRANS2QUIK_DLL_DISCONNECTED"
If Num = 12 Then Trans2QuikResultToStr = "TRANS2QUIK_MEMORY_ALLOCATION_ERROR"
If Num = 13 Then Trans2QuikResultToStr = "TRANS2QUIK_WRONG_CONNECTION_HANDLE"
If Num = 14 Then Trans2QuikResultToStr = "TRANS2QUIK_WRONG_INPUT_PARAMS"
Return 0
End Function
Private Sub cmdConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdConnect.Click
On Error Resume Next
PathToInfo = "C:\Quik\info.exe"
FunctionResult = TRANS2QUIK_CONNECT(PathToInfo, pnExtendedErrorCode, lpstrErrorMessage, dwErrorMessageSize)
FunctionResultString = Trans2QuikResultToStr(FunctionResult)
MsgBox("F: " & vbCrLf & _
"FunctionResult = " & FunctionResult & vbCrLf & _
"FunctionResultString = " & FunctionResultString & vbCrLf & _
"pnExtendedErrorCode = " & pnExtendedErrorCode & vbCrLf & _
"lpstrErrorMessage = " & lpstrErrorMessage)
g_nOrdersCount = g_nTradesCount = 1
End Sub
Private Sub cmdChekConnectDell_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdChekConnectDell.Click
FunctionResult = TRANS2QUIK_IS_DLL_CONNECTED(pnExtendedErrorCode, lpstrErrorMessage, dwErrorMessageSize)
FunctionResultString = Trans2QuikResultToStr(FunctionResult)
MsgBox("F: " & vbCrLf & _
"FunctionResult = " & FunctionResult & vbCrLf & _
"FunctionResultString = " & FunctionResultString & vbCrLf & _
"pnExtendedErrorCode = " & pnExtendedErrorCode & vbCrLf & _
"lpstrErrorMessage = " & lpstrErrorMessage)
End Sub
End Class
Всем, Здравствуйте! Обращаюсь к разработчикам и к тем, кто сталкивался с подобной проблемой. Маленькая программка на VB.Net. При нажатии на кнопку фокус должен перейти на Quik. Тестировал на других приложениях, все работает - блокнот, калькулятор, paint. Не знаю, что вставить в метод shell.AppActivate(“??????????? ”). Пробовал QUIK, quik, Quik, QuikKitFinace, Quik Кит Финанс - не работает. Что ввести, подскажите.
Код
Imports IWshRuntimeLibrary.WshWindowStyle
Public Class Form1
Private shell As IWshRuntimeLibrary.WshShell
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
shell = New IWshRuntimeLibrary.WshShell
shell.AppActivate("?????????????")
My.Computer.Keyboard.SendKeys("{F4}", True)
End Sub
End Class
Здравствуйте. Обращаюсь к разработчикам системы. Подскажите, пожалуйста, как повысить скорость передачи данных «стакана» в Excel, а то создается впечатление, что включен таймер и обновление происходит 1 раз в сек., а в «стакане» значения поменялись раз 5. Версия Quik 6.14.0.12.
Всем доброго дня! Разъясните, пожалуйста, следующую ситуацию. При работающем таймере Quik(версия 6.14.0.12) внизу слева показано время сервера. У меня это время показывает с интервалами от 3 до 20 сек. Пример: 10:52:15 следующее значение 10:52:27. Это нормальный процесс или где-то и что-то не так?
При передаче таблицы котировок ("Стакан") через DDE-сервер в MS Excel возникает две проблемы: 1. Передача данных идет меньше минуты. Сообщение: "Исчерпано время для обмена данными: сервер слишком загружен". 2. Появление информации в Excel отстает от "стакана" (визуально до 1/2 сек).
Такого не происходит при импорте из других таблиц. Версия Quik - 6.14.0.12, Excel - 2010. Подскажите пожалуйста что необходимо "подкрутить", настроить. С Уважением, заранее благодарен.