Avatar billede pumpin Nybegynder
25. juli 2007 - 15:55 Der er 4 kommentarer

hvad er AFXDLL ?

hey eksperter jeg har fundet en C++ aplication som indenholder lige præsis den functionalitet jeg ønsker. den kan sende nogle keys til det window som har focus ved hjælp af P/invoke..

men når jeg prøver at Builde mit Class libary til en DLL fil så kommer den med denne fejl

Error    1    fatal error C1189: #error :  Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]    C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\afx.h    24   


Og da jeg ikke er C++ man men C# må jeg tilstå at jeg giver lidt op :D 

er der en venlig sjæl der ude som kan hjælpe mig vidre ?

Hilsen Troels
Avatar billede bertelbrander Novice
25. juli 2007 - 19:48 #1
Har du brug for afxdll eller MFC (vis os f.eks. koden)?
Hvilken version af Visual C++ bruger du?
Avatar billede jpk Nybegynder
25. juli 2007 - 21:41 #2
Afxdll er en MFC dll, hvis den er krævet kan du prøve at kompilere den med i din eksekverbare fil, så den ikke figurerer som en ekstern afhængighed.
Jeg kan se du bruger VS v8, er det 2005?
Jeg har ikke kodet i Visual C++ siden v2003, men der var indstillingerne noget lign.:
Project->Settings->Use MFc in a static library/Use MFC dynamically
Her kan du så vælge "static" for at kompilere den nødvendige kode med og, forhåbentlig, undgå ovenstående fejl...
Avatar billede pumpin Nybegynder
26. juli 2007 - 13:10 #3
Hey drenge, sry jeg ikke lige har svaret. jeg sender lige noget kode her sener når jeg kommer hjem fra work. Men i bund og grund handler det om Pinvoke og at sende keyboard events til en given application.
Avatar billede pumpin Nybegynder
31. juli 2007 - 09:13 #4
heysan jeg undskylder mange gange at jeg ikke har postede før, men en eller anden klovn havede gravet et kabel over så jeg har ikke haft net de sidste 3 dage.

men her er koden som jeg roder med der er mange mange liner, hvis det er kan jeg uoloade det som en rar fil eller evt som selvstændige txt filer.

Header fil :

#ifndef __SENDKEYS_04192004__INC__
#define __SENDKEYS_04192004__INC__

#include <windows.h>
#include <tchar.h>

class CSendKeys
{
private:
  bool m_bWait, m_bUsingParens, m_bShiftDown, m_bAltDown, m_bControlDown, m_bWinDown;
  DWORD  m_nDelayAlways, m_nDelayNow;

  static BOOL CALLBACK enumwindowsProc(HWND hwnd, LPARAM lParam);
  void  CarryDelay();

  typedef BYTE KEYBOARDSTATE_t[256];
  struct enumwindow_t
  {
    LPTSTR str;
    HWND hwnd;
  };

  struct key_desc_t
  {
    LPCTSTR keyName;
    BYTE VKey;
    bool normalkey; // a normal character or a VKEY ?
  };

  enum
  {
    MaxSendKeysRecs  = 71,
    MaxExtendedVKeys = 10
  };

  /*
  Reference: VkKeyScan() / MSDN
  Bit Meaning
  --- --------
  1  Either SHIFT key is pressed.
  2  Either CTRL key is pressed.
  4  Either ALT key is pressed.
  8  The Hankaku key is pressed
  16  Reserved (defined by the keyboard layout driver).
  32  Reserved (defined by the keyboard layout driver).
  */
  static const WORD VKKEYSCANSHIFTON;
  static const WORD VKKEYSCANCTRLON;
  static const WORD VKKEYSCANALTON;
  static const WORD INVALIDKEY;

  static key_desc_t KeyNames[MaxSendKeysRecs];
  static const BYTE ExtendedVKeys[MaxExtendedVKeys];

  static bool BitSet(BYTE BitTable, UINT BitMask);

  void PopUpShiftKeys();

  static bool IsVkExtended(BYTE VKey);
  void SendKeyUp(BYTE VKey);
  void SendKeyDown(BYTE VKey, WORD NumTimes, bool GenUpMsg, bool bDelay = false);
  void SendKey(WORD MKey, WORD NumTimes, bool GenDownMsg);
  static WORD StringToVKey(LPCTSTR KeyString, int &idx);
  void KeyboardEvent(BYTE VKey, BYTE ScanCode, LONG Flags);

public:

  bool SendKeys(LPCTSTR KeysString, bool Wait = false);
  static bool AppActivate(HWND wnd);
  static bool AppActivate(LPCTSTR WindowTitle, LPCTSTR WindowClass = 0);
  void SetDelay(const DWORD delay) { m_nDelayAlways = delay; }
  CSendKeys();
};

#endif


stdafx.h 

// stdafx.h : include file for standard system include files,
//  or project specific include files that are used frequently, but
//      are changed infrequently
//

#if !defined(AFX_STDAFX_H__B75DB13B_0532_471C_9389_18361FBEE84A__INCLUDED_)
#define AFX_STDAFX_H__B75DB13B_0532_471C_9389_18361FBEE84A__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define VC_EXTRALEAN        // Exclude rarely-used stuff from Windows headers

#include <afxwin.h>        // MFC core and standard components
#include <afxext.h>        // MFC extensions
#include <afxdtctl.h>        // MFC support for Internet Explorer 4 Common Controls
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>            // MFC support for Windows Common Controls

#include "GrinderSendKeys.h"
#endif // _AFX_NO_AFXCMN_SUPPORT


//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__B75DB13B_0532_471C_9389_18361FBEE84A__INCLUDED_)


selve program koden er ca 600 liner så post hvis det er abselut nødvendigt, men tror nu problemet ligger i en af header filerne

hilsen Troels
ps. undskyld forsinkelsen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester