PDA

Visualizza la versione completa : [C++] IDBPromptInitialize::PromptDataSource


denis76
21-12-2015, 17:55
Mi serve una mano a finire questa funzione:



IDBPromptInitialize*pIDBPromptInitialize;
IUnknown*pIUnknown; CoCreateInstance(CLSID_DataLinks,NULL,CLSCTX_INPRO C_SERVER,IID_IDBPromptInitialize,(LPVOID*)&pIDBPromptInitialize);
if(pIDBPromptInitialize->PromptDataSource(NULL,(HWND)this->winId(),DBPROMPTOPTIONS_PROPERTYSHEET,0,NULL,NULL, IID_IUnknown,(IUnknown**)&pIUnknown)==S_OK){
LPOLESTR*aaa;
if(((IDataInitialize*)pIDBPromptInitialize)->GetInitializationString(pIUnknown,true,aaa)==S_OK) { qDebug()<<"ok3"<<aaa;
}elseqDebug()<<"false3";
pIUnknown->Release();
}elseqDebug()<<"false";


Mi serve ottenere la connection string in una stringa, chiamata aaa o come volete. Mi potete aiutare?

shodan
21-12-2015, 20:38
Se la if non fallisce, credo sia:


if(((IDataInitialize*)pIDBPromptInitialize)->GetInitializationString(pIUnknown,true,aaa)==S_OK) {
qDebug()<<"ok3"<< *aaa;
} // etc...

denis76
22-12-2015, 09:55
Il problema č che dentro aaa ottengo solo una stringa vuota.
Credo ci sia qualcos'altro da fare. Ecco una funzione scritta in freepascal che dovrebbe funzionare:
http://www.swissdelphicenter.ch/en/showcode.php?id=2271
Con ciņ che ho scritto, appare il wizard eseguendo
pIDBPromptInitialize->PromptDataSource()




IDBPromptInitialize*pIDBPromptInitialize;
IUnknown*pIUnknown;
CoCreateInstance(CLSID_DataLinks,NULL,CLSCTX_INPRO C_SERVER,IID_IDBPromptInitialize,(LPVOID*)&pIDBPromptInitialize);
if(pIDBPromptInitialize->PromptDataSource(NULL,(HWND)this->winId(),DBPROMPTOPTIONS_PROPERTYSHEET,0,NULL,NULL, IID_IUnknown,(IUnknown**)&pIUnknown)==S_OK) {
LPOLESTR*aaa;

La riga seguente credo sia errata.

if(((IDataInitialize*)pIDBPromptInitialize)->GetInitializationString(pIUnknown,true,aaa)==S_OK) {
qDebug()<<"ok3"<<aaa;
} else qDebug()<<"false3";
pIUnknown->Release();
} elseqDebug()<<"false";

ma poi non riesco a catturare ciņ che lo wizard ha prodotto.

Loading