Код:

Global Const $DMLERR_NO_ERROR = 0x0
Global Const $DMLERR_ADVACKTIMEOUT = 0x4000
Global Const $DMLERR_BUSY = 0x4001
Global Const $DMLERR_DATAACKTIMEOUT = 0x4002
Global Const $DMLERR_DLL_NOT_INITIALIZED = 0x4003
Global Const $DMLERR_DLL_USAGE = 0x4004
Global Const $DMLERR_EXECACKTIMEOUT = 0x4005
Global Const $DMLERR_INVALIDPARAMETER = 0x4006
Global Const $DMLERR_LOW_MEMORY = 0x4007
Global Const $DMLERR_MEMORY_ERROR = 0x4008
Global Const $DMLERR_NOTPROCESSED = 0x4009
Global Const $DMLERR_NO_CONV_ESTABLISHED = 0x400A
Global Const $DMLERR_POKEACKTIMEOUT = 0x400B
Global Const $DMLERR_POSTMSG_FAILED = 0x400C
Global Const $DMLERR_REENTRANCY = 0x400D
Global Const $DMLERR_SERVER_DIED = 0x400E
Global Const $DMLERR_SYS_ERROR = 0x400F
Global Const $DMLERR_UNADVACKTIMEOUT = 0x4010
Global Const $DMLERR_UNFOUND_QUEUE_ID = 0x4011
; Возвращает/открывает URL страницы на заданной вкладке Оперы.
; $sURL - адрес открываемой страницы,
; если задана пустая строка возвращает адрес заданного окна.
; $hWin - номер вкладки обозревателя,
; 0 новая вкладка (при открытии),
; -1 текущая вкладка.
; $iWait - таймаут ожидания в миллисекундах, при превышении будет выдана ошибка.
Func OperaOpenURL($sURL = "", $hWin = -1, $iWait = 10000)
Local $ret, $err, $uIdInst = DllStructCreate("int")
Local $hServer[1], $hTopic[1], $hItem[1], $hConv[1], $hData[1], $sData[1]
Local $sTopic = "WWW_OpenURL", $sItem = $sURL&',,0x'&Hex($hWin)
If $sURL='' Then
$sTopic = "WWW_GetWindowInfo"
$sItem = "0x"&Hex($hWin)
EndIf
Local $hDll = DllOpen("user32.dll")
If $hDll=-1 Then Return SetError(1, 0, "") ; Ошибка открытия DLL
$ret = DllCall("user32.dll", "int", "DdeInitialize", "ptr", DllStructGetPtr($uIdInst), "ptr", 0, "int", 0, "int", 0)
If $ret[0] Then Return SetError(2, $ret[0], "") ; Ошибка инициализации DDE
$hServer = DllCall($hDll, "int", "DdeCreateStringHandle", "int", DllStructGetData($uIdInst,1), "str", "opera", "int", 1004)
If $hServer[0] Then
$hTopic = DllCall($hDll, "int", "DdeCreateStringHandle", "int", DllStructGetData($uIdInst,1), "str", $sTopic, "int", 1004)
If $hTopic[0] Then
$hItem = DllCall($hDll, "int", "DdeCreateStringHandle", "int", DllStructGetData($uIdInst,1), "str", $sItem, "int", 1004)
If $hItem[0] Then
$hConv = DllCall($hDll, "int", "DdeConnect", "int", DllStructGetData($uIdInst,1), "int", $hServer[0], "int", $hTopic[0], "int", 0)
If $hConv[0] Then
$hData = DllCall($hDll, "int", "DdeClientTransaction", "ptr", 0, "int", 0, "int", $hConv[0], "int", $hItem[0], "int", 1, "int", 0x20B0, "int", $iWait, "ptr", 0)
If $hData[0] Then
$sData = DllCall($hDll, "str", "DdeAccessData", "int", $hData[0], "ptr", 0)
EndIf
EndIf
EndIf
EndIf
EndIf
$err = DllCall($hDll, "int", "DdeGetLastError", "int", DllStructGetData($uIdInst,1))
If $hData[0] Then DllCall($hDll, "int", "DdeFreeDataHandle", "int", $hData[0])
If $hConv[0] Then DllCall($hDll, "int", "DdeFreeDataHandle", "int", $hConv[0])
If $hItem[0] Then DllCall($hDll, "int", "DdeFreeDataHandle", "int", $hItem[0])
If $hTopic[0] Then DllCall($hDll, "int", "DdeFreeDataHandle", "int", $hTopic[0])
If $hServer[0] Then DllCall($hDll, "int", "DdeFreeDataHandle", "int", $hServer[0])
If $err[0] Then Return SetError(3, $err[0], "") ; Другие ошибки DDE
DllCall($hDll, "int", "DdeUninitialize", "int", DllStructGetData($uIdInst,1))
DllClose($hDll)
If $sURL='' Then $sURL = StringRegExpReplace($sData[0],'^"([^"]*?)".*','\1')
Return $sURL
EndFunc