1

.txt ファイルのテキストの修飾子の後に入力を取得するのに問題があります。私がやりたいのは、.txt ファイルに「type:」という単語が含まれている場合、それ以降はすべて char に入れられるということです。これまでの私のコード:

#include "stdafx.h"
#include <windows.h>
#include "VKH.h"
#include "Strmif.h"
#include <iostream>
#include <stdio.h>
#include <string>
#include <fstream>

void GetDocumentandRead() {
string line;
ifstream myfile (line1);
if (myfile.is_open())
{
  while ( !myfile.eof() )
  {
    getline (myfile,line);
    char aline[100];
    strcpy(aline, line.c_str());
    printf(aline, "\n");
    if (line.compare("mouseup") == 0){
        MouseUp(10);
    }
    if (line.compare("mousedown") == 0){
        MouseDown(10);
    }
    if (line.compare("mouseright") == 0){
        MouseRight(10);
    }
    if (line.compare("mouseleft") == 0){
        MouseLeft(10);
    }
    if (line.compare("mouseclick") == 0){
        MouseClick();
    }
    if (line.compare("enter") == 0){
        Enter();
    }
    if (line.compare("ctrltab") == 0){
        CtrlTab();
    }
    if (line.compare("tab") == 0){
        Tab();
    }
    if (line.compare("altf4") == 0){
        AltF4(0);
    }
    if (line.compare("alttab") == 0){
        AltTab();
    }
    if (line.compare("mousecenter") == 0){
        MouseCenter();
    }
    if (line.compare(6,5,"type:") == 0){
      //Don't know what to put here...
    }
  }
  myfile.close();
 }

 else printf("\nUnable to open file\n\n");

}

したがって、テキスト ファイルの「type:」の後に、TypeStr(); と呼んだ関数を使用してそれを入力します。

void TypeStr(char *lpszString)
{
  char cChar;
  while((cChar=*lpszString++)) // loops through chars
  {
    short vk=VkKeyScan(cChar); // keycode of char
    if((vk>>8)&1){keybd_event(VK_LSHIFT,0,0,0);} // hold shift if necessary
    keybd_event((unsigned char)vk,0,0,0); // key in
    keybd_event((unsigned char)vk,0,KEYEVENTF_KEYUP,0); // key out
    if((vk>>8)&1){keybd_event(VK_LSHIFT,0,KEYEVENTF_KEYUP,0);} // release shift if necessary
  }
}

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

3

TypeStrまず、関数が。になるように関数を書き直す必要がありconst char *ます。このような

void TypeStr(const char *lpszString)
{
    ...
}

他の変更は必要ありません。

次に、このようにコードからその関数を呼び出す必要があります

if (line.compare(6,5,"type:") == 0){
   TypeStr(line.c_str() + 11);
}

TypeStr関数をconst char*(一般的に良いスタイルであることは別として)に変更しなければならない理由は、のc_str()メソッドがではなくをstd::string返すためです。const char*char*

于 2012-11-11T08:10:27.617 に答える