在C#中使用IBM的PCOMM的示例代码写了一个as400 screenscraper

时间:2008-09-15 17:19:31

标签: c# com interop ibm-midrange

是否有人使用C#为IBM as400编写示例屏幕抓取工具?

5 个答案:

答案 0 :(得分:3)

http://www.codeproject.com/KB/cs/all_ehllapi.aspx

我修改了这个例子,它运行得很好。

答案 1 :(得分:3)

使用interop.AutOIATypeLibrary和interop.AutPSTypeLibrary构建类库时。它会抛出如下错误 无法将“AutPSTypeLibrary.AutPSClass”类型的COM对象转换为接口类型“AutPSTypeLibrary.IAutPS”。此操作失败,因为对IID为“{891FC4A1-7DD8-11D0-9112-0004AC3617E1}”的接口的COM组件的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE))

我正在使用VS2017,Framework 4.5。 Interop Dlls使用framework64中的regasm.exe注册,参考已添加

上面的Dll工作正常,同时使用控制台应用程序/ Win表单应用程序创建项目。

答案 2 :(得分:0)

多年前我曾在C中写过一篇关于Frigidaire项目的文章。内部卡会导致各种内存泄漏的乐趣,但我最终通过在通信卡的边界分配数组找到了解决方案。这是8年多以前的事了,我确信今天的卡片要好得多,并且/或者使用原生的通讯来阅读AS400屏幕。

答案 3 :(得分:0)

您可能希望查看PHP中的新功能。最新版本的PHP有一个5250处理器,允许您创建一个与绿屏相互作用的Web应用程序。 5250 Bridge Info

我意识到你想要C#,但我还没有看到任何与屏幕直接交互的支持。也许写一个PHP应用程序连接到5250并从那里连接你的C#。

答案 4 :(得分:0)

我每天都与这些图书馆合作。如有需要,请随时发邮件给我。

示例:

using AutOIATypeLibrary;
using AutPSTypeLibrary;

namespace MyNamespace
{
    public class Program 
    {
         public AutPS PS = new AutPS();
         public AutOIA OI = new AutOIA();
         static void Main()
        {
            PS.SetConnectionByName("A");
            OI.SetConnectionByName("A");
             // Gets a string from the presentation space at row 1, col 1, length 5
            PS.GetText(1, 1, 5); 

            // Gets the entire screen as a string. parse as needed.
            PS.GetText(1, 1, PS.NumRows * PS.NumCols);

            // Searches for a literal string in the presentation space by going forward from your row/col
            PS.SearchText("LiteralString".ToUpper(), PsDir.pcSrchForward, 1, 1);
        }
    }
}