小编Per*_*t28的帖子

使用UI自动化的Google Chrome访问树缓存问题

当用户在浏览器中向下滚动时,Google Chrome不会刷新辅助功能元素(AutomationElement).

重现它:

  1. 使用以下方式启用渲染器辅助功能: "chrome --force-render-accessibility"或通过设置Global Accessibility at "chrome://accessibility".
  2. 转到http://en.wikipedia.org/wiki/Google
  3. 在UI自动化模式下打开inspect.exe(从Windows Kits),查找"链接到相关文章"元素.
  4. 回到Chrome,向下滚动,直到底部显示"链接到相关文章"
  5. 屏幕上标有"相关文章的链接"元素

我找到了一些可以强制Chrome刷新它的手动解决方案:

  1. 将缩放设置为90%然后将其设置为100%(非常非常难看)
  2. 关闭可访问性,然后打开 chrome://accessibility/

我正在寻找的是能够以编程方式执行这些操作之一,或任何可以使Chrome刷新其缓存树的操作.


我尝试过的:

  • 调整窗口大小 PInvoke/MoveWindow
  • 重绘窗口 PInvoke/Redrawwindow
  • 构建镀铬扩展并按需强制缩放至100%:( chrome.tabs.setZoom(null, 0);工作但闪烁并减慢窗口速度)

这些都没有正常工作.

编辑:在Windows 7下使用Google Chrome 40.XX,41.XX,42.XX,43.XX,44.XX,45.XX,46.XX,47.XX.Dev,48.XX.Dev进行测试.

c# pinvoke accessibility google-chrome ui-automation

155
推荐指数
1
解决办法
4381
查看次数

如何增加 .NET 中的 TLS 握手大小?

我在尝试与 .NET 客户端建立双向身份验证时遇到连接协商失败。

这种情况发生在远程服务器显着增加授权 CA 列表之后。

虽然通过设置更高的值可以在任何 Java 客户端中轻松解决此问题jdk.tls.maxHandshakeMessageSize,但我找不到针对 .NET 的相同解决方法。

(.NET Framework 4.7.2) 和 Internet Explorer 11会出现此问题System.Net.HttpClientSystem.Net.Security.SslStream

.net c# schannel mtls

6
推荐指数
1
解决办法
759
查看次数

从AMCHARTS网格中删除垂直线并保持水平线

我的问题是关于特定的图形和图表构建工具调用AMCHARTS.我正在使用他们的实时编辑器来构建一个Graph,我需要从图表网格中删除垂直线(仅保留水平线).

有可能这样做吗?

谢谢,

charts amcharts

5
推荐指数
4
解决办法
8645
查看次数

Escape for Folder Exists和Create purpose

我有以下代码:

if (!Directory.Exists(@"C:\" + reader1.GetString(ColIndex1) + @"\" + reader1.GetString(ColIndex2) + @"\" + reader1.GetString(ColIndex3)))
{
    Directory.CreateDirectory(@"C:\" + reader1.GetString(ColIndex1) + @"\" + reader1.GetString(ColIndex2) + @"\" + reader1.GetString(ColIndex3));
}
Run Code Online (Sandbox Code Playgroud)

如何转义值以便它可以正确检查文件夹是否存在并在需要时创建它们?

例如,目前,如果ColIndex2包含包含以下字符的文本:

\/:*?"<>|
Run Code Online (Sandbox Code Playgroud)

代码不能正确创建文件夹.

.net c#

3
推荐指数
1
解决办法
125
查看次数

为什么函数'getAr'中定义的局部变量可以在main中访问?

int *getAr() 
{ 
         int *a; 
         int i; 
         a=(int*)malloc(sizeof(int)*10); 
         for(i=0;i<10;i++) 
            a[i]=i; 
         return(a); 
} 
int main() 
{ 
         int *a; 
         int i; 
         a=getAr(); 
         for(i=0;i<10;i++) 
            printf("%d\t",a[i]); 
         printf("\n"); 
         return 0; 
} 
Run Code Online (Sandbox Code Playgroud)

输出是:

0 1 2 3 4 5 6 7 8 9

c

2
推荐指数
1
解决办法
107
查看次数

需要一些关于 async/await 和线程安全的解释

还有一个关于线程安全和 async/await 的问题。我不明白为什么我的第二个增量不是线程安全的。

class Program
{
    static int totalCountB = 0; 
    static int totalCountA = 0;
    
    static async Task AnotherTask()
    {
        totalCountA++; // Thread safe
        await Task.Delay(1);
        totalCountB++; // not thread safe 
    }

    static async Task SpawnManyTasks(int taskCount)
    {
        await Task.WhenAll(Enumerable.Range(0, taskCount)
            .Select(_ => AnotherTask()));
    }

    static async Task Main()
    {
        await SpawnManyTasks(10_000);

        Console.WriteLine($"{nameof(totalCountA)} : " + totalCountA); // Output 10000
        Console.WriteLine($"{nameof(totalCountB)} : " + totalCountB); // Output 9856
    }
}
Run Code Online (Sandbox Code Playgroud)

我的理解是:

  • totalCountA++是线程安全的,因为在那之前,代码是完全同步的。
  • 我知道await可能会在线程池上运行,但我没想到恢复的代码await将完全是多线程的。

根据一些答案/博客,async/await …

c# async-await

2
推荐指数
1
解决办法
1145
查看次数