WoW:API hooksecurefunc: Difference between revisions

From AddOn Studio
Jump to navigation Jump to search
No edit summary
 
mNo edit summary
Line 1: Line 1:
{{wowapi}}__NOTOC__
{{wowapi}}__NOTOC__
Creates a secure 'post hook' for the named function. The hookfunc is invoked after the original function, and receives the same parameters. Return values from hookfunc are discarded. This is the only safe way to hook functions that execute protected functionality.
Creates a secure 'post hook' for the named function. Your hook will be called with the same arguments, but will not be able to affect the outcome of the original call.
  hooksecurefunc([table,] "functionName", hookfunc)
  hooksecurefunc([table,] "functionName", hookfunc)


===Takes===
==Parameters==
:;table : table which functionName exists on
===Arguments===
:;table : Optional Table - if you're hooking a function on an object, provide a reference to the object.
:;functionName : String - the name of the function being hooked.
:;hookfunc : Function - your hook function.


:;"functionName" : the name of the function being hooked
==Example==
local echoHook = function (...)
  local msg = , "";
  table.foreach({...}, function(k,v) msg = msg .. k .. "=[" .. tostring(v) .."] "; end);
  DEFAULT_CHAT_FRAME:AddMessage("[Echo] " .. msg);
end;
hooksecurefunc("CastSpellByName", echoHook); -- Hooks the global CastSpellByName
hooksecurefunc(GameTooltip, "SetUnitBuff", echoHook); -- Hooks GameTooltip.SetUnitBuff
===Result===
Hooks CastSpellByName and GameTooltip.SetUnitBuff without compromising their secure status. When those functions are called, prints their argument list into the default chat frame.


:;hookfunc : the hook function
==Notes==
===Returns===
This is the only safe way to hook functions that execute protected functionality.
: Nothing


===Details===
The hookfunc is invoked after the original function, and receives the same parameters; return values from hookfunc are discarded.
* After hooksecurefunc() is used on a function, setfenv() throws an error when attempted on that function
 
After hooksecurefunc() is used on a function, setfenv() throws an error when attempted on that function

Revision as of 01:32, 28 December 2006

WoW API < hooksecurefunc

Creates a secure 'post hook' for the named function. Your hook will be called with the same arguments, but will not be able to affect the outcome of the original call.

hooksecurefunc([table,] "functionName", hookfunc)

Parameters

Arguments

table
Optional Table - if you're hooking a function on an object, provide a reference to the object.
functionName
String - the name of the function being hooked.
hookfunc
Function - your hook function.

Example

local echoHook = function (...) 
 local msg = , "";
 table.foreach({...}, function(k,v) msg = msg .. k .. "=[" .. tostring(v) .."] "; end);
 DEFAULT_CHAT_FRAME:AddMessage("[Echo] " .. msg);
end;
hooksecurefunc("CastSpellByName", echoHook); -- Hooks the global CastSpellByName
hooksecurefunc(GameTooltip, "SetUnitBuff", echoHook); -- Hooks GameTooltip.SetUnitBuff

Result

Hooks CastSpellByName and GameTooltip.SetUnitBuff without compromising their secure status. When those functions are called, prints their argument list into the default chat frame.

Notes

This is the only safe way to hook functions that execute protected functionality.

The hookfunc is invoked after the original function, and receives the same parameters; return values from hookfunc are discarded.

After hooksecurefunc() is used on a function, setfenv() throws an error when attempted on that function