我想用windows derours庫繞行一個非win api函數。該函數是Qt庫(QtGui4.dll)的一部分。我想知道我將如何設置函數簽名爲:MS Detours Library,迂迴非贏api函數
void QPainter::drawText (const QPointF & position, const QString & text)
我有這個去和它收到我平時上的錯誤,要求一點點的解釋將是有趣的,以及:
void (QPainter * real_drawText)(const QPointF & position, const QString & text) = drawText
這是他們的樣子對於TextOut,在windows下API:
BOOL (WINAPI * Real_TextOut)(HDC a0, int a1, int a2, LPCWSTR a3, int a4) = TextOutW;
BOOL WINAPI Mine_TextOut(HDC hdc,int X,int Y,LPCWSTR text,int textLen)
{
BOOL rv = Real_TextOut(hdc, X, Y, text, textLen);
HWND hWindow = WindowFromDC(hdc);
SendTextMessage(hWindow, text);
return rv;
}
所以,從基因的建議我嘗試下面的:
typedef void (QPainter::* Real_qp_drawText)(const QPointF & position, const QString & text);
void Mine_drawText(const QPointF & position, const QString & text)
{
Real_qp_drawText(position,text);
}
但是得到了錯誤,'函數式轉換爲內置類型只能使用一個參數。
所以無論如何,他們說有點當衆羞辱是良好的靈魂,我的靈魂必須具有最佳時機......
感謝。
對不起基因,這對我來說都是新鮮的,所以我會問,我該怎麼做? – flavour404 2011-01-08 01:21:53