小编Ser*_*ron的帖子

使用 HTML Agility Pack 或 Regexp 检查开始和结束标记?

我有一个用 C# 编写的小文本编辑器。

我需要以纯文本形式打开 HTML 文件(已完成),并检查正确的开始和结束标记。例如,如果我有这个:

<body> Text </body>它应该说它是正确的,但如果我有:<body> <body>它应该说它是错误的。

有什么方法可以通过 HTML Agility Pack 或 C# 中的 Regexp 来获得它?

html c#

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

我可以将TLS与Send-MailMessage cmdlet一起使用吗?

我正在尝试使用PowerShell发送电子邮件,但需要使用TLS。我可以使用Send-MailMessage cmdlet做到这一点吗?

这是我的代码:

$file = "c:\Mail-content.txt"

if (test-path $file)
{

    $from = "afgarciact@gmail.com"
    $to = "<slopez@comfama.com.co>","<carloscu@comfama.com.co>"
    $pc = get-content env:computername
    $subject = "Test message " + $pc
    $smtpserver ="172.16.201.55"
    $body = Get-Content $file | Out-String


[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { return $true }

     foreach ($recipient in $to)
    {
        write-host "Sent to $to"
        Send-MailMessage -smtpServer $smtpserver -from $from -to $recipient -subject $subject  -bodyAsHtml $body -Encoding ([System.Text.Encoding]::UTF8)
    }



}
else
{
write-host "Configuración"
}
Run Code Online (Sandbox Code Playgroud)

非常感谢!

powershell

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

使用 Windows API 获取文件的文件类型

我试图识别文件何时为 PNG 或 JPG 并将其应用为壁纸。我正在使用SHGetFileInfo来获取变量的类型名称.szTypeName,但我刚刚意识到如果操作系统使用另一种语言,它就会发生变化。

这是我的代码:

SHFILEINFOW fileInfo;
UINT sizeFile = sizeof(fileInfo);
UINT Flags = SHGFI_TYPENAME | SHGFI_USEFILEATTRIBUTES;

//  Getting file info to find out if it has JPG or PNG format
SHGetFileInfoW(argv[1], 0, &fileInfo, sizeFile, Flags);
Run Code Online (Sandbox Code Playgroud)

这就是我验证的方式:

if (wcscmp(fileInfo.szTypeName, L"JPG File") == 0)
{

//Code here

}
Run Code Online (Sandbox Code Playgroud)

当操作系统使用西班牙语时,该值会更改为“Archivo JPG”,因此我必须针对所有语言进行验证,这是没有意义的。

知道我还可以使用什么其他功能吗?

winapi

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

从用户输入中将参数保存到事实中

前几天我问了一个关于Prolog基本输入/输出的问题,但现在我有另一个问题.

我正在我的大学做一个与ITS诊断相关的Prolog项目.

假设我从一些基本事实开始:

lesion(herpes).
lesion(sifilis).
ampolla(herpes).
inguinal(herpes).
fiber(herpes).
headache(herpes).
picazon(herpes).
secrecion(sifilis).
Run Code Online (Sandbox Code Playgroud)

我有一些基本的测试规则:

its(herpes):-lesion(herpes), inguinal(herpes), picazon(herpes), fiber(herpes).
its(herpes):- ampolla(herpes), headache(herpes), picazon(herpes).
its(sifilis):-secrecion(sifilis), lesion(sifilis).
Run Code Online (Sandbox Code Playgroud)

我的问题是:

有什么方法可以通过使用问题而不是自己设置来保存每个参数?让我解释:

例如,我想声明一个空的事实:lesion(_)然后问用户: Do you have any lesion?如果答案是肯定的,那么事实是:lesion(herpes).

在那之后,我会问另一个问题,直到得到一个论证的所有事实,所以我可以打印:X =疱疹或类似的东西.

这甚至可能吗?

任何帮助将不胜感激.

prolog

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

错误234"使用GetComputerNameEx可获得更多数据"

我收到More data is available错误的GetComputerNameEx功能,但不知道如何解决它.

这是我的代码:

int wmain()
{
    COMPUTER_NAME_FORMAT nameType = ComputerNameDnsFullyQualified;
    WCHAR computerName[MAX_COMPUTERNAME_LENGTH + 1];
    DWORD size = ARRAYSIZE(computerName);

    BOOL pcName = GetComputerNameEx(nameType, computerName, &size);

    DWORD error = GetLastError();



    if (pcName != 0)
    {
        wprintf("Computer name: %s\n", computerName);
    }
    else
    {
        wprintf(L"Error getting the name. Code: %li\n", error);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

不知道如何将size变量设置为输出,因此我可以computerName正确声明数组.

c string winapi

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

CreateWellKnownSid 表示参数与 WinAccountAdministratorSid 不正确,但适用于 WinBuiltAdministratorsSid

我正在尝试使用内置管理员帐户获取众所周知的 SID,CreateWellKnownSid以便我可以在其他功能中使用它,但是当用作第一个参数时,我收到参数不正确的错误消息WinAccountAdministratorSid;但是,如果我使用WinBuiltinAdministratorsSidWinBuiltinUsersSid它有效。不知道发生了什么。

代码:

#include <Windows.h>
#include <wchar.h>
#include <LM.h>
#include <locale.h>

#pragma comment(lib, "Netapi32.lib")

#define MAX_NAME 256

VOID ShowError(DWORD errorCode)
{
    //FormatMessageW
    DWORD flags = FORMAT_MESSAGE_ALLOCATE_BUFFER |
        FORMAT_MESSAGE_FROM_SYSTEM |
        FORMAT_MESSAGE_IGNORE_INSERTS;
    LPWSTR errorMessage;
    DWORD size = 0;

    if (!FormatMessageW(flags, NULL, errorCode, 0, (LPWSTR)&errorMessage, size, NULL))
    {
        fwprintf(stderr, L"Could not get the format message, error code: %u\n", GetLastError());
        exit(1);
    }

    wprintf(L"\n%s", errorMessage);

    LocalFree(errorMessage);
}

int wmain(int argc, WCHAR **argv)
{
    _wsetlocale(LC_ALL, L"English"); …
Run Code Online (Sandbox Code Playgroud)

c windows winapi

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

RegSetValueEx:使用const BYTE数据类型创建DWORD值

我试图搜索这个问题,但是在这里我找不到任何东西:

我正在尝试使用C代码WinAPI中RegSetValueEx函数以及官方文档中定义的数据类型创建一个Registry值.我使用了这些定义:

PTCHAR regValueName = TEXT("dwValue");
DWORD regValueType = REG_DWORD;
BYTE regData = 1;
const BYTE *pRegData = &regData;
DWORD dataSize = sizeof(regData);
Run Code Online (Sandbox Code Playgroud)

这个HKEY值是由RegCreateKeyEx我没有在这里显示的.

这是我使用该功能的方式:

setValueKey = RegSetValueEx(*pHandleResult, regValueName, reserved,
                            regValueType, pRegData, dataSize);
Run Code Online (Sandbox Code Playgroud)

setValueEx是一种LONG类型.

您可以注意到,我正在尝试创建一个DWORD值,因此我将BYTEregData值定义为1,然后将const BYTE指针定义为该值,但它不起作用.该值已创建,但数据显示:

DWORD 32位值无效.

注册表视图

我知道BYTE数据类型被定义为unsiged char,但我尝试过'1'但没有用.我也知道使用一个DWORD值作为regData类型有效,但我想知道为什么官方数据类型不适用于DWORD值.

谁能告诉我如何使用BYTE数据类型创建值?

我没有把所有的代码都放进去,但如果需要的话,我会的.

谢谢.

c winapi

0
推荐指数
1
解决办法
356
查看次数

是否有任何WinAPI功能来修改桌面图标大小?

也许我没有做好搜索,但找不到任何WinAPI功能来修改桌面图标大小.如果没有,你能建议一种方法来实现吗?

winapi

0
推荐指数
1
解决办法
160
查看次数

在编译时使用 GetUserNameEx 在 Visual Studio 2017 中出现大量错误

我正在尝试使用 GetUserNameEx,但甚至无法编译它,因为我遇到了大量错误。这是我的代码:

   #include <Windows.h>
    #include <Secext.h>
    #include <tchar.h>
    #include <wchar.h>

    #pragma comment(lib, "Secur32.lib")

    int wmain(int argc, WCHAR *argv[])
    {

        //GetUserNameEx()
        EXTENDED_NAME_FORMAT nameFormat = NameDnsDomain;
        WCHAR nameExtended[256 + 1];
        DWORD sizeExtended = 256 + 1;


        if (GetUserNameEx(nameExtended, &sizeExtended))
        {

            wprintf(L"%s\n", nameExtended);
        }
        else
        {
            wprintf(L"Error code: %lu\n", GetLastError());
        }
return 0;
}
Run Code Online (Sandbox Code Playgroud)

这些是我在尝试编译时遇到的错误:

Visual Studio 2017 中的错误

你能帮助我吗?似乎编译器无法识别该函数。

编辑:我不能包含所有错误,因为大约有 48 个与代码无关,除了错误的函数调用。

c winapi

-1
推荐指数
1
解决办法
837
查看次数

使用 RegLoadKey() 的任何示例

我得到了这个代码:

int wmain(int argc, WCHAR *argv[])
{
    HKEY hKey = HKEY_LOCAL_MACHINE;
    LPCWSTR subKey = L"Example";
    LPCWSTR pFile = L"C:\\Users\\Default\\NTUSER.DAT";

    LONG loadKey = RegLoadKey(hKey, subKey, pFile);

    if (loadKey != ERROR_SUCCESS) {
        wprintf(L"Code: %li\n", loadKey);
    } else {
        wprintf(L"Mounted!\n");
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道我需要为我的呼叫过程启用 SE_RESTORE_NAMESE_BACKUP_NAME,并且MSDN 上有一个示例,但无法理解。不知道把我需要的特权放在哪里。

任何人都可以向我展示如何合并所有这些并使RegLoadKey()功能正常工作的示例吗?

有很多 MSDN 文档没有解释的变量,比如hToken,等等。这就是我需要帮助的原因。

c winapi

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

标签 统计

winapi ×7

c ×5

c# ×1

html ×1

powershell ×1

prolog ×1

string ×1

windows ×1